2014-02-25 23 views
5

試圖找到EventHandler實例的調用方法,我必須!執行此操作,然後嘗試查找_methodPtr所指的方法。使用WinDBG從PDB獲取函數簽名

_methodPtr是在我的情況32c0e0

我想通了使用dd 32c0e0(其中包含方法的地址)。

不過,我想的第一件事就是看非託管代碼在32c0e0,這是:

0:000> !U 32c0e0 
Unmanaged code 
0032c0e0 e8d55cf567  call mscorwks!PrecodeFixupThunk (68281dba) 
    ... etc ... 

PrecodeFixupThunk不是mscorwks的出口,我找不到點兒上谷歌一下吧。 我想這是WinDbg中使用解決了mscorwks.pdb電話...

我的問題是:什麼是PrecodeFixupThunk簽名?我可以使用x!u找到它的asm代碼,但更一般地說,是否有使用windbg獲取函數簽名的方法?

[編輯] FYI:

0:000> x /v /t mscorwks!PrecodeFixupThunk 
pub global 68281dba 0 <NoType> mscorwks!PrecodeFixupThunk = <no type information> 

回答

2

這要看情況。您可以使用專用符號或公共符號構建模塊。專用符號包含有關變量,類型,功能的所有信息。公共符號包含變量和函數的RVA。

MS通常只上傳與一些類型定義公共符號或公共符號。

看到: http://msdn.microsoft.com/en-us/library/windows/hardware/ff553493(v=vs.85).aspx

+0

感謝你們給我提供信息的鏈接。 因此,如果我理解的很好,mscorwks.pdb包含'PrecodeFixupThunk'方法名稱(及其地址映射),但沒有更多信息? – Olivier

+0

是的。 而第二個:「咚」後綴可能會注意到,從彙編代碼生成的這個功能,並具有不常見的序言/尾聲/調用約定。 –

+0

你是對的,它似乎是這樣:) – Olivier