Dot-Net

使用 Windbg SOS 擴展單步執行原始碼

  • July 17, 2015

我最近從本機程式碼程式切換到託管程式碼程式。我正在使用.NET。

由於我使用 Windbg 已經有一段時間了,我也想將它用於託管程式碼調試。

我的搜尋把我帶到了 SOS(罷工之子)擴展,它似乎有一些非常強大的命令。

儘管我了解 SOS 中使用的大多數命令,但我無法找到正確單步執行原始碼的方法,就像我可以對本機程式碼使用 p 和 t 指令一樣。

這使得調試體驗變得困難,我真的很想在調試時單步執行程式碼。

我對此進行了一些研究,發現使用 6.7.05.0 版本的 Windbg 可以做到這一點,其中 MS 似乎已經發布了集成託管調試,但在以後的版本中回滾了。

儘管如此,我對能夠在通過 SOS 進行調試時實時單步執行“源”程式碼非常感興趣。特別是因為它確實阻礙了我現在的調試體驗。

有沒有辦法做到這一點?

感謝您提供有關如何執行此操作(或實際解決方法)的任何幫助。

Windbg 擅長分析崩潰程序的小型轉儲。但是,它不是託管調試器。

您可以通過在 Visual Studio 中載入 SOS 來吃蛋糕。這允許使用託管調試器中可用的正常調試工具,以及可以從 SOS 中獲得的診斷。有一些限制適用:

  • 您必須啟用非託管調試,項目+屬性,調試選項卡,勾選選項
  • VS 是 32 位程序,因此您只能使用 32 位版本的 SOS。項目 + 屬性,建構選項卡,如果您使用的是 64 位版本的 Windows,請確保您已選擇 x86。

開始調試並切換到即時視窗。鍵入.load sos.dll,您應該會看到類似extension C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos.dll loaded. 鍵入 !help 並驗證您是否看到列出的 SOS 命令。

嘗試使用 !sosex.mt 和 !sosex.mgu。‘p’ 命令應該像宣傳的那樣工作。

引用自:https://stackoverflow.com/questions/13116549