0

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

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

问候,

乌斯曼

4

3 回答 3

2

你有一堆概念。PDB 与任何其他文件一样不包含堆栈或堆栈帧,因为它是在执行期间创建的。.net exe/dll 包含类的元数据,因此您可以查看方法签名。您可以在代码中获取堆栈帧(google class StackFrame/ StackFrame),但您仍然不能像参数值一样从堆栈中获取所有数据。

于 2010-03-30T13:00:40.117 回答
1

要从转储中提取函数名称、地址和参数类型,您可以使用 dia2dump 程序。它作为调试接口访问 SDK (dia-sdk) 的示例提供。您可以在 Visual 2008 或 2010 下找到它C:\Program Files\Microsoft Visual Studio (your version)\DIA SDK\Samples\DIA2Dump

于 2010-04-02T07:45:35.877 回答
1

在编译时无法获取堆栈帧。堆栈是一个运行时概念。

于 2010-03-30T12:56:53.040 回答