c# - 使用dia-sdk从microsoft pdb文件加载数据

标签 c# .net pdb-files dia-sdk

嗨,我正在尝试从 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/

相关文章:

c# - 将 C# 桌面应用程序与 Rails 网络应用程序链接起来

c# - NHibernate 中无法识别的配置部分 applicationSettings

c# - 托管 PNG 优化库可用吗?

c# - 如果我只有 DLL 和 PDB 文件,有没有办法在按 F12 时浏览源代码?

c# - 将人的高度从英尺和英寸转换为英寸 C#

c# - 使用 ASP.Net MVC 和 Web Api 的 Application Insights 实时指标

c# - Xamarin 发布版本较小

c++ - 使用 DIA SDK 在 C++ PDB 中列出类的文件夹

c++ - 使用 GDB 调试英特尔 C++ 编译代码

c# - 无法加载文件或程序集 'PcapDotNet.Core.dll'