您没有指定是调试本机代码还是托管代码。它不会影响答案,WinDbg对两者都非常有用,但很多人认为WinDbg在调试.NET应用程序时不太相关。不是这样。作为奖励,您可以通过使用SOS扩展在WinDbg中调试.NET应用程序来了解.NET平台的工作原理。在WinDbg中运行(或附加)您的.NET应用程序并键入...
.loadby sos mscorwks
...确保为正在使用的CLR版本加载正确的扩展名。然后输入......
!help
...查看SOS扩展中可用的命令。
我听说它开玩笑说微软只有一个开发者工具,而且它是WinDbg。您可能想要调试的所有内容都在那里或扩展中。当然,这些东西的一部分也可以在VS中使用更友好的UI ...... :-)
最新的视觉工作室是否仍然缺少相当于windbg的“-o”,使调试器自动附加到子进程?对于必须从复杂的.bat文件运行的应用程序或者分叉和退出父进程的应用程序非常有用。
以下是一些有助于使用的更多链接 WinDbg的 ,大多数是特定于.NET的。
当我从NT4.0服务器发送.dmp文件时,我已经使用过它 - MSVC不会加载这些旧的格式文件。
我总是喜欢手表和追踪功能:'wt' - >它会在发生时将所有函数调用打印到输出窗口。那是非常酷的东西!
如果您想知道为什么要在Visual Studio上使用windbg,那么您需要阅读 高级Windows调试 。任何时候你需要调试一个真正丑陋的问题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进行所有调试。
轻量级,无需在客户机上安装即可运行,速度快,可以调试内核模式。