何时使用windbg进行调试?

时间:2011-02-20 16:53:38

标签: debugging windbg

我理解windbg在调试时有多强大,但是何时使用它来调试问题是合适的还是最佳时机?它是更具体问题,还是只是经验,直觉,并且知道使用它可以让工作做得最好?

3 个答案:

答案 0 :(得分:4)

这是所有这些事情的一点点,以及很多个人的偏好。许多WinDbg人员只使用WinDbg,因此他们最擅长调试。

WinDbg也有一些很好的扩展,如SOS。因此,特定的扩展可能会为您提供另一个调试器不具备的特定信息。

在某些情况下使用不同调试器的一个原因是您认为调试器不正确。这当然很少见。例如,对于堆栈遍历这样的事情,调试器使用不同的方法,因此您可以通过使用另一个来确认堆栈是您期望的。

总而言之,对于大多数问题而言并不重要。这是你最擅长使用的。对于某些特定问题,这就是您所说的,知道哪个工具最适合该特定问题。

答案 1 :(得分:1)

虽然Windbg也是用户模式调试的一个很好的工具,但如果你最终进行内核模式调试,它确实是唯一认真的选择。

内核模式调试方案通常涉及两台机器,一个调试器和一个调试对象。您将在调试器计算机上运行Windbg,该计算机通过串行连接,Firewire或USB连接到调试对象。在这种情况下,您可以“冻结”目标计算机并完全控制其上运行的所有内容。通常,您的调试对象(目标)将是在VMWare或类似情况下运行的虚拟机 - 在这种情况下,连接通常也使用虚拟串行端口。

以下是VMWare有关如何设置虚拟机内核调试的说明:

http://www.vmware.com/support/ws5/doc/ws_devices_serial_advanced_example_debugging.html

您还可以使用VirtualKD,使设置更容易,连接速度更快:

http://virtualkd.sysprogs.org/

您还可以使用Windbg进行本地内核调试。在这种情况下,您只有一台机器可以将Windbg连接到正在运行的内核。你不能“冻结”机器,因为它也会冻结在同一台机器上运行的Windbg,但你可以分析内存的内容等等。

答案 2 :(得分:1)

好点。另一个很好的虚拟内核调试解决方案是来自sysinternals的LiveKd。

http://technet.microsoft.com/en-us/sysinternals/bb897415.aspx