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

Dev*_*v28 8 .net debugging windbg managed sos

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

由于我已经使用Windbg很长一段时间了,我也想用它来进行托管代码调试.

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

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

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

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

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

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

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

Ste*_*son 6

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

  • 可能是在WinDbg的更高版本中,源同步将无法正常工作.不幸的是,我无法控制那部分.但是,如果您使用!muf扩展名,则可以很好地与源代码同步.它不如代码窗口中的突出显示那么好,但它可以工作. (2认同)

Han*_*ant 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命令.