Visual Studio和Windbg:哪一个更适合调试大规模托管应用程序

时间:2009-12-17 06:58:53

标签: c# visual-studio debugging windbg

Visual Studio似乎非常本地调试C#项目,但是当扩展时,似乎调试起来不太方便,例如当项目包含一些调用/调出本机代码的代码时...... / p>

我想知道在调试大型/严肃项目时是否有任何证据表明windbg比VS.Net更好。

另一个问题是没有SOS扩展可以在C#源文件上设置断点吗?

3 个答案:

答案 0 :(得分:5)

  • 调试非托管应用程序时,WinDbg至少比VS快一个数量级。
  • 调试托管应用程序时速度更快;但是,它没有为VS管理调试提供支持级别。
  • WinDbg不能用于没有SOS的托管调试。

另外,有时可以通过在WinDbg中运行VS来获得两全其美。但是,您需要:

  1. 拥有一台带有大量内存的尖叫快速机器。甚至不想在虚拟机中这样做。
  2. 不要忘记在WinDbg上设置选项以附加到子进程。
  3. 在WinDbg下运行时避免在VS中构建。

答案 1 :(得分:3)

这篇hanselminutes podcast详细介绍了windbg:

斯科特本周在瑞典与他一起坐下来与主调试器和ASP.NET升级工程师Tess Ferrandez。她解释了.NET调试101.什么是转储文件?你需要PDB吗?你如何使用WinDBG以及调试内存问题,执行问题和挂起的最佳方法是什么。

答案 2 :(得分:2)

我定期使用WinDbg来调试非常大的混合模式应用程序。我发现挖掘运行时细节,堆,线程等的选项非常有用。 VS中几乎没有支持几个选项,因此WinDbg在这种情况下非常有用。

WinDbg的最大问题可能是它漫长而陡峭的学习曲线,但是一旦你掌握了基础知识,我发现WinDbg比VS更容易使用很多任务。我已经用了好几年了,我还是经常学习新东西。

当前版本的WinDbg + SOS不支持托管代码的源级调试。如果你真的需要这个尝试找到版本6.7.5。有关其他详细信息,请参阅此帖子:http://voneinem-windbg.blogspot.com/2007/04/windbg-6750-released.html

下一版本的SOS(适用于.NET 4)支持一些源代码级调试,因为它能够提取托管调用堆栈和反汇编的源文件和行信息(使用!u命令)。