我有一個.net應用程序運行約一個小時後鎖定。我希望對其線程進行驗證,以確定每個狀態的狀態。問題是,在附加一個調試器(MSVC12)後,沒有明顯的方法來獲取可讀的棧跟蹤。應用程序使用外部測試工具啓動,因此我無法在調試器中輕鬆啓動它。MSVC調試符號
我已經創建了目錄c:/ symbols,將_NT_SYMBOL_PATH設置爲Srv * c:\ symbols * http://msdl.microsoft.com/download/symbols,並在工具/選項/調試/符號中勾選「環境變量」和「微軟服務器」都打勾。
pdb與可執行文件存在於同一個目錄中,但是我也使用symstore(即使我仍然在W7上,它與W8 SDK一起出現)存儲在c:/符號中。在c:/ symbols中有一個新創建的子目錄,儘管symstore說它找到了一個ID(0000001),然後存儲了0個文件(它也表示有0個錯誤和0個被忽略的文件)。
我得到的堆棧跟蹤往往很短,有些看起來完全相同(空閒線程可能?),例如,
ntdll.dll!0000000076ff137a() Unknown
KernelBase.dll!000007fefd071a7a() Unknown
kernel32.dll!0000000076d91559() Unknown
mscorlib.ni.dll!000007fef171e9e2() Unknown
mscorlib.ni.dll!000007fef12935f8() Unknown
0000000008e20298() Unknown
mscorlib.ni.dll!000007fef12935f8() Unknown
00000000572fd470() Unknown
非常感謝提前。
非常感謝!恐怕我根本不知道可以從MSVC中(而不是從任務管理器)附加調試器。我猜這裏必須有一本手冊:-(在我告訴它禁用「只是我的代碼」選項後,它會加載符號。 –