如何检查 pdb 文件是不是对调试程序集有效
Posted
技术标签:
【中文标题】如何检查 pdb 文件是不是对调试程序集有效【英文标题】:how to check if pdb file is valid for debugging an assembly如何检查 pdb 文件是否对调试程序集有效 【发布时间】:2011-05-22 12:32:51 【问题描述】:我正在为学术目的符号源服务器编写一些逻辑。
我必须检查程序集及其 pdb 文件是否相互匹配,以便用户可以毫无问题地使用它们。
我几乎没有做任何研究,但没有什么特别之处。如果 VS 在调试时会得到错误的符号,它可能会显示信息:
以下模块是构建的 启用或不启用优化 调试信息: 程序集.dll 到 调试这个模块,改变它的项目 将配置构建到调试模式。到 禁止显示此消息,禁用 '如果启动时没有用户代码则发出警告' 调试器选项。
我也想知道 VS 从 pdb 和程序集获取什么信息来验证它们。
是否有任何(托管)API?甚至是不受管理的?
有什么想法吗?
【问题讨论】:
【参考方案1】:我认为 Visual Studio 使用的 API 名称是 DIA;它是一个可以从 C# 调用的 COM API。
Mono.Cecil 库提供了一组很好的类来访问程序集及其符号;它在下面使用 DIA 来存储 .pdb 文件。我会为此直接打电话给塞西尔;如果没有,源代码应该提供指导。
【讨论】:
谢谢,比起 COM,我更喜欢任何托管 api,Mono.Cecil 很高兴了解【参考方案2】:此页面包含一篇关于 PDB 和 DBG 文件的血腥细节的优秀文章。它准确地解释了符号文件中存储的内容,如何读取它,以及如何确定二进制文件(EXE 或 DLL)与符号文件(PDB 或 DBG)是否匹配。
http://www.debuginfo.com/articles/debuginfomatch.html#details
【讨论】:
以上是关于如何检查 pdb 文件是不是对调试程序集有效的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 不生成.vshost.exe和.pdb文件的方法