2012-10-29 107 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. 在調用堆棧中導航並單擊相關條目,它將使用代碼瀏覽器打開一個窗口。