8

我仍然是 C++ 的相对新手,并且在我从本机 C++ DLL 静态链接到的第三方 DLL 中遇到了问题。我正在使用 Visual Studio 2012 来调试我的 DLL。

(FWIW,第三方 DLL 是 Sybase Open Client,我正在通过我编写的 C# 可执行文件调试我的 DLL,它动态加载我的 C++ DLL。)

我使用 Visual Studio 进行了反汇编,并查看了第三方 DLL 的寄存器和内存使用情况。Visual Studio 为我提供了很多关于我的流程内部正在发生什么的好信息,但我觉得那里可能比我所看到的更多,并且可能是一种更容易或更有效的方法来获得它。

我读过 WinDbg 是一个非常强大的工具,但是要学会使用它需要相当多的时间和精力。我的问题是:学习使用 WinDbg 是否值得努力,或者 Visual Studio 中的调试工具会给我几乎相同的信息?

4

1 回答 1

4

我的问题是:学习使用 WinDbg 是否值得努力,或者 Visual Studio 中的调试工具会给我几乎相同的信息?

这真的取决于你正在做什么样的编程。

WinDBG 确实允许您查看操作系统内部的结构。它允许您查看整个系统中的线程和进程,并调试在 OS 内核本身(例如驱动程序)中运行的代码。编写脚本来挖掘某些信息的能力很强,或者,我相信,甚至可以编写在 WinDBG 中运行的插件来执行某些任务。

对于 VS 类型的调试器来说,这大部分是困难的或不可能的。

我或这里的任何人几乎不可能告诉你是否应该学习使用 WinDBG。知道这当然不会对您造成伤害,但是您完全有可能在不需要它的情况下度过很长时间。

于 2013-05-28T22:44:25.993 回答