使用WinDBG从PDB获取函数签名

Oli*_*ier 5 .net windbg pdb-files

试图找到EventHandler实例的调用方法,我不得不这样做,然后尝试查找_methodPtr引用的方法.

_methodPtr 在我的情况下是32c0e0

我想出了它dd 32c0e0(包含方法地址).

但是,我尝试的第一件事是查看32c0e0处的非托管代码,它是:

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

PrecodeFixupThunk不是mscorwks的导出,我在谷歌上找不到任何关于它的东西.我想windbg正在使用mscorwks.pdb解析调用...

我的问题是:什么是PrecodeFixupThunk签名?我可以使用x和找到它的asm代码!u,但更一般地说,有没有办法使用windbg获取函数签名?

[编辑] 仅供参考:

0:000> x /v /t mscorwks!PrecodeFixupThunk
pub global 68281dba    0 <NoType> mscorwks!PrecodeFixupThunk = <no type information>
Run Code Online (Sandbox Code Playgroud)

小智 2

这取决于。您可以使用私有符号或公共符号构建模块。私有符号包含有关变量、类型、函数的所有信息。公共符号包含变量和函数的 RVA。

MS通常只上传公共符号或带有某些类型定义的公共符号。

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