2016-08-18 22 views
2

我正在嘗試使用WinDbg調試單聲道應用程序。應用程序在WinDbg無法在內部進行解碼的C#代碼內以無限循環掛起。如何使用Windbg從堆棧中獲取Mono函數的名稱

我知道我可以使用函數mono_pmip()到堆棧地址轉換爲

我使用.call mono!mono_pmip(0x63a0630)函數的名稱(驗證爲可使用x *!*pmip*),但我仍然不能得到的輸出該函數,我得到一個訪問衝突。

這是堆棧:

34 018feee8 071824eb 0x71824eb 
35 018fef08 07181f4c 0x71824eb 
36 018fef28 0717fd8a 0x7181f4c 
37 018fef68 071708ae 0x717fd8a 
38 018fefc8 07170328 0x71708ae 
39 018ff078 0716efa5 0x7170328 
3a 018ff0e8 0716ed4c 0x716efa5 
3b 018ff108 18de8f88 0x716ed4c 
3c 018ff1b8 18de75ff 0x18de8f88 
3d 018ff208 18de6f6f 0x18de75ff 
3e 018ff238 18de660c 0x18de6f6f 
3f 018ff2f8 18de60ce 0x18de660c 
40 018ff328 18de6033 0x18de60ce 
41 018ff348 18ddf586 0x18de6033 
42 018ff3e8 18ddebc6 0x18ddf586 
43 018ff408 18dde13e 0x18ddebc6 
44 018ff418 063a0630 0x18dde13e 
45 018ff450 100f1328 0x63a0630 
46 018ff480 1005d984 mono!mono_jit_runtime_invoke+0x214 [c:\buildslave\mono\build\mono\mini\mini.c @ 4936] 
47 018ff4a4 0035e9ce mono!mono_runtime_invoke+0x51 [c:\buildslave\mono\build\mono\metadata\object.c @ 2623] 

,如果我在Visual Studio中使用即時窗口相同功能的實際工作

(char*)mono.dll!mono_pmip((void*)0x63a0630) 
0x15ebf258 " Login.Login:OnClickLoginButton() + 0x4b (21FF75F8 21FF765C) [06E26E70 - Unity Root Domain]" 

我仍然需要使它在WinDbg中運行:(

我想知道是否必須在調試堆棧的同一線程上執行調用。我想調試。

+1

我有另一個線索,我想我必須這樣寫:.call mono!mono_pmip(0x6c2c5df) – sebas

回答

0

我意識到我從來沒有回答過這個問題。 (char *)mono.dll!mono_pmip((void *)address)僅在mainthread中可用,所以我必須首先從線程列表中選擇主線程。

相關問題