C# 如何检查pdb文件是否对调试程序集有效

C# 如何检查pdb文件是否对调试程序集有效,c#,visual-studio,debugging,mono,symbols,C#,Visual Studio,Debugging,Mono,Symbols,我正在为学术目的编写一些逻辑符号源服务器 我必须检查程序集及其pdb文件是否相互匹配,以便用户可以毫无问题地使用它们 我做的研究很少,但没有什么了不起的。如果VS在调试时得到错误的符号,则可能会显示以下信息: 以下模块也已构建 启用或不启用优化 调试信息: assembly.dll 到 调试此模块,更改其项目 将配置生成为调试模式。到 抑制此消息,禁用 '启动时没有用户代码时发出警告' 调试器选项 我还想知道VS从pdb和汇编中获得了什么信息来验证它们。 是否有任何(托管)API?甚至不受管理

我正在为学术目的编写一些逻辑符号源服务器

我必须检查程序集及其pdb文件是否相互匹配,以便用户可以毫无问题地使用它们

我做的研究很少,但没有什么了不起的。如果VS在调试时得到错误的符号,则可能会显示以下信息:

以下模块也已构建 启用或不启用优化 调试信息: assembly.dll
到 调试此模块,更改其项目 将配置生成为调试模式。到 抑制此消息,禁用 '启动时没有用户代码时发出警告' 调试器选项

我还想知道VS从pdb和汇编中获得了什么信息来验证它们。

是否有任何(托管)API?甚至不受管理


有什么想法吗?

我认为VisualStudio使用的API的名称是DIA;这是一个COM API,可以从C#调用


该库提供了一组很好的类,用于访问程序集及其符号;它对.pdb文件使用DIA。为此,我会直接打电话给塞西尔;如果没有,源代码应该提供一个指南。

本页包含一篇关于PDB和DBG文件的详细信息的优秀文章。它准确地解释了符号文件中存储的内容、如何读取以及如何确定二进制文件(EXE或DLL)和符号文件(PDB或DBG)是否匹配


谢谢,我更喜欢任何托管api而不是COM、Mono。Cecil很高兴知道