如何从PDB编译时获取StackFrame?

时间:2010-03-30 12:54:39

标签: visual-studio debugging pdb-files

我需要从任何PDB(All in / out参数及其类型)获取函数的堆栈帧。我有PDB中某个函数的函数名和地址,有没有办法从PDB文件中获取该函数的所有参数(输入/输出)?

这些函数是用非托管代码编写的。

此致

乌斯曼

3 个答案:

答案 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

下找到它