嗨,我正在尝试从 pdb 文件读取数据
我已按照 How do I use the MS DIA SDK from C#? 中的步骤操作并生成程序集
问题是:在 MS pdb 文件上调用 dataSource.loadDataFromPdb 时,它会抛出 ComException(HRESULT: 0x806D000C)
我尝试过使用 dumpbin.exe/headers 但失败并显示“未知格式”
在自生成的 pdb 上使用 .loadDataFromPdb 和 dumpbin 可以正常工作
IDiaDataSource dataSource = new DiaSourceClass();
//dataSource.loadDataFromPdb(@"D:\Symbols\System.Data.Entity.pdb"); // Fails
dataSource.loadDataFromPdb(@"D:\Symbols\myassembly.pdb"); // Success
IDiaSession session;
dataSource.openSession(out session);
var guid = session.globalScope.guid.ToString();
是否有另一种方法可以打开 MS pdb 文件,并专门提取 GUID
最佳答案
基于 info here 的一些数学计算表明 0x806D000C 对应于 E_PDB_FORMAT which MSDN has a description of :“尝试访问过时格式的文件。”
基于此,我必须问(是的,可能会晚一些)...您还记得您尝试使用哪个版本的 Visual Studio 和 DIA 吗?对于 Microsoft 发送的 PDB,PDB 格式可能已更改,因此您的工具可能不是最新的。
关于c# - 使用dia-sdk从microsoft pdb文件加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18374023/