与Visual Studio调试器相比,使用WinDbg的主要原因是什么?为什么使用WinDbg与Visual Studio(VS)调试器?
它通常用作Visual Studio调试器的完全替代品,或者更多用于需要时。
与Visual Studio调试器相比,使用WinDbg的主要原因是什么?为什么使用WinDbg与Visual Studio(VS)调试器?
它通常用作Visual Studio调试器的完全替代品,或者更多用于需要时。
如果你想知道为什么你应该使用Visual Studio的windbg,那么你需要阅读Advanced Windows Debugging。任何时候你需要调试一个真正丑陋的问题windbg比Visual Studio有更好的技术来完成它。 Windbg具有更强大的脚本语言,并允许您编写DLL来自动化难题。它会安装gflags.exe,这使您可以更好地控制堆以调试内存覆盖。
您实际上并不需要运行安装,只需将文件复制并准备好即可。此外,它还会安装adsplus.vb,因此您可以采取运行流程的小型转储。设置为执行远程调试也很容易。没有什么比能够从你自己的桌面调试问题更好的了,而不是与测试PC上的闪烁的15“显示器作斗争。
对于日常代码编写,我使用Visual Studio,但是一旦你需要启动调试其他计算机的问题或者发现自己处于一个非常丑陋的情况,windbg是唯一的出路,花一些时间学习windbg是一项巨大的投资,而且如果你看看崩溃转储,有两个很好的资源,http://www.dumpanalysis.org/blog和http://blogs.msdn.com/ntdebugging/default.aspx所有的调试都使用windbg
当我从NT4.0服务器发送.dmp文件时,我已经使用它 - MSVC不会加载这些旧的格式文件。
轻量级,可以运行而无需将其安装在客户机上,速度快,可以调试内核模式。
你不指定你是在调试本机代码还是托管代码,它不会影响答案,WinDbg对于两者都非常有用,但很多人认为WinDbg在某种程度上不太相关当调试ng .NET应用程序。并非如此。作为奖励,您可以通过使用SOS扩展在WinDbg中调试.NET应用程序,了解.NET平台如何工作。跑起来(或连接到)你的.NET应用程序在WinDbg中和型......
.loadby sos mscorwks
...以确保您加载使用的CLR版本的权利扩展。然后键入...
!help
...查看SOS扩展中有哪些命令可用。
我听说它开玩笑说微软只有一个开发工具,它是WinDbg。你可能想要调试的所有东西都在那里,或者在一个扩展中。当然,这些东西的子集也可以在VS中用更友好的用户界面... :-)
这里有一些进一步的链接来帮助使用WinDbg,大多数是.NET特定的。
混合内核调试加上远程用户模式调试。
AFAIK,visual studio 仍然不能在我称之为“解决方案”的模式下进行远程调试。这是使用windbg的一个很好的理由。
问题:
解决方案:
而且,我觉得更容易使用为内核模式和用户模式相同的调试器,WinDBG的是非常强大的,即使在用户模式,我可以利用我自己的WinDbg扩展 两个内核模式和用户模式实例。
最新的visual studio是否仍然缺少与windbg的“-o”等价的功能,使调试器自动附加到子进程?对于必须从复杂的.bat文件或分叉和退出父进程的应用程序运行的应用程序非常有用。
我一直很喜欢手表和跟踪功能:'wt' - >它在输出窗口打印所有功能调用。这是非常酷的东西!
如果您设置项目的调试属性并启用“非托管调试”,则可以将SOS扩展加载到Visual Studio中。启用非托管调试 - >在某处设置断点 - >运行 - >当您点击断点时,打开即时窗口(ctrl + alt + i)并键入.load sos。有关更多信息,请参阅http://blogs.msdn.com/vijaysk/archive/2007/11/15/sos-your-visual-studio.aspx。 – dss539 2009-06-04 19:26:39