最近,我从 native 编程切换为托管代码编程。我正在使用.NET。

由于我已经使用Windbg一段时间了,因此我也想将其用于托管代码调试。

我的搜索使我进入了SOS(罢工之子)扩展程序,它似乎有一些强大的命令。

即使我了解SOS中使用的大多数命令,也无法找到适本地逐步处理源代码的方法,就像我可以对本地代码使用p和t指令一样。

这使调试经验变得困难,我真的很想在调试代码时逐步进行调试。

我对此进行了一些研究,发现使用Windbg的6.7.05.0版本可以做到这一点,在该版本中,MS似乎已经发布了集成的托管调试,但是在更高版本中回滚了。

尽管如此,我对能够在通过SOS调试时逐步完成“源代码”非常感兴趣。特别是因为它确实阻碍了我现在的调试经验。

有没有办法做到这一点?

感谢您提供有关如何执行此操作的任何帮助(或实际解决方法)。

最佳答案

Windbg擅长分析崩溃进程的小型转储。但是,它不是托管调试器。

您可以通过在Visual Studio中加载SOS来吃蛋糕。这允许使用托管调试器中提供的常规调试工具,以及可以摆脱SOS的诊断。有一些限制:

  • 您必须启用非托管调试,“项目+属性”,“调试”选项卡,勾选
  • 选项
  • VS是一个32位进程,因此您只能使用32位版本的SOS。如果使用的是64位版本的Windows,请在“项目+属性”的“生成”选项卡上,确保已选择x86。

  • 开始调试并切换到立即Windows。输入.load sos.dll,您应该会看到类似extension C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos.dll loaded的消息。键入!help并确认您看到列出的SOS命令。

    关于.net - 使用Windbg SOS扩展单步执行源代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13116549/

    10-10 16:05