2012-10-29 62 views
7

我最近从本机切换到托管代码编程。我正在使用.NET。使用Windbg SOS Extension扩展源代码

因为我一直在使用WinDBG的很长一段时间,我想使用它的托管代码调试也是如此。

我的搜索已经把我带到了SOS扩展,这似乎有相当一些强大的命令(行使的儿子)。

即使我了解大部分的命令在SOS使用,我无法找到一种方法,通过源代码,以正确步骤,就像我可以使用原生代码的P和T指示做。

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

我研究了这一点,并发现这是可能的使用6.7.05.0版本的WinDbg其中MS似乎已经发布了集成管理的调试,但回滚在以后的版本。不过,我很感兴趣的是能够在通过SOS进行调试的同时实时通过“源代码”代码。特别是因为它现在真的阻碍了我的调试体验。

有没有办法做到这一点?

如何做到这一点(或实用的解决方法)的任何帮助表示赞赏。

回答

6

Windbg闪耀在分析碰撞过程的小型转储。但它不是托管调试器。

通过在Visual Studio中加载SOS,您可以拥有自己的蛋糕并将其吃掉。它允许使用托管调试器中可用的普通调试工具,以及可从SOS中获得的诊断信息。有几个限制:

  • 您必须启用非托管调试,项目+属性,调试选项卡,勾选选项
  • VS是一个32位的过程,所以你只能使用SOS的32位版本。 Project + Properties,Build选项卡,确保在使用64位版本的Windows时选择x86。

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

5

尝试使用!sosex.mt和!sosex.mgu。 'p'命令应该像广告一样工作。

+1

嘿史蒂夫,这是很酷的从SOSEX本身的开发商的答复..!我的主要目的是确保当我遍历代码时,我可以在调试器中看到正确的代码行。虽然我无法通过SOS做到这一点,但从您的回复中我收集到,“!sosex.mt”和“!sosex.mgu”等同于本地代码的t和gu。但是执行这些命令是否也会在源窗口中突出显示相应的代码行?再次感谢你的回复 ! – Dev28

+2

这可能是在更高版本的WinDbg中,源同步无法正常工作。不幸的是,我无法控制那部分。但是,如果使用!muf扩展名,则可以很好地与源代码同步。它不如代码窗口中的高亮显示,但它起作用。 –

+0

谢谢史蒂夫。如果你能量化“WinDbg的后续版本”究竟是什么,它会有帮助吗? – Dev28

0

如果你想要的是来装源代码的WinDbg,你可以遵循这些步骤:

  1. 进入File->源文件路径,与源文件选择文件夹。
  2. 前往查看 - >调用堆栈,它会打开一个新窗口。
  3. 在调用堆栈中导航并单击相关条目,它将使用代码浏览器打开一个窗口。