使用Windbg SOS Extension逐步执行源代码

时间:2012-10-29 05:55:02

标签: .net debugging windbg managed sos

我最近从原生代码转换为托管代码编程。我正在使用.NET。

由于我已经使用Windbg很长一段时间了,我也希望将它用于托管代码调试。

我的搜索带我进入SOS(罢工之子)扩展,这似乎有一些强大的命令。

即使我理解在SOS中使用的大多数命令,我也无法找到正确逐步执行源代码的方法,就像我可以使用本机代码的p和t指令一样。

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

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

尽管如此,我对通过SOS进行调试时能够直播“源代码”非常感兴趣。特别是因为它现在真的阻碍了我的调试体验。

有没有办法实现这个目标?

对于如何执行此操作(或实际解决方法)的任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:6)

Windbg在分析崩溃过程的小型转移时非常兴奋。但它不是托管调试器。

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

  • 您必须启用非托管调试,Project + Properties,Debug选项卡,勾选选项
  • VS是一个32位进程,因此您只能使用32位版本的SOS。 Project + Properties,Build选项卡,确保在使用64位版本的Windows时已选择x86。

开始调试并切换到Immediate Windows。输入.load sos.dll,您会看到extension C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos.dll loaded之类的消息。键入!help并验证您是否看到列出的SOS命令。

答案 1 :(得分:5)

尝试使用!sosex.mt和!sosex.mgu。 'p'命令应该像宣传的那样工作。

答案 2 :(得分:0)

如果您想要将源代码连接到windbg,您可以按照以下步骤操作:

  1. 转到文件 - >源文件路径,选择包含源文件的文件夹。
  2. 转到View->调用堆栈,它将打开一个新窗口。
  3. 在调用堆栈中导航并单击相关条目,它将打开一个包含代码浏览器的窗口。
相关问题