我需要从任何PDB(All in / out参数及其类型)获取函数的堆栈帧。我有PDB中某个函数的函数名和地址,有没有办法从PDB文件中获取该函数的所有参数(输入/输出)?
这些函数是用非托管代码编写的。
此致
乌斯曼
答案 0 :(得分:2)
你有很多概念。 PDB与任何其他文件不包含堆栈或堆栈帧,因为它是在执行期间创建的。 .net exe / dll包含类的元数据,因此您可以查看方法签名。您可以在代码中获取堆栈帧(google class StackFrame
/ StackFrame
)但仍然无法从堆栈中获取所有数据,例如参数值。
答案 1 :(得分:1)
在编译时无法获得堆栈帧。堆栈是一个运行时概念。
答案 2 :(得分:1)
要从转储中提取函数名称,地址和参数类型,可以使用dia2dump程序。它可作为Debug Interface Access SDK(dia-sdk)的示例提供。您可以使用Visual 2008或2010在C:\Program Files\Microsoft Visual Studio (your version)\DIA SDK\Samples\DIA2Dump