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

时间:2010-12-08 21:56:11

标签: c# visual-studio debugging mono symbols

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

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

我做了很少的研究,但没有任何壮观。如果VS将得到错误的符号调试,它可能会显示信息:

  

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

我也想知道VS从pdb和程序集中获取哪些信息来验证它们。

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

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我认为Visual Studio使用的API名称是DIA;它是一个可以从C#调用的COM API。

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

答案 1 :(得分:2)

此页面包含有关PDB和DBG文件的血腥细节的优秀文章。它准确地解释了符号文件中存储的内容,如何读取它,以及如何确定二进制文件(EXE或DLL)和符号文件(PDB或DBG)是否匹配。

http://www.debuginfo.com/articles/debuginfomatch.html#details