我正在为学术目的编写符号源服务器的逻辑。
我必须检查程序集及其pdb文件是否相互匹配,以便用户可以毫无问题地使用它们。
我做了很少的研究,但没有任何壮观。如果VS将得到错误的符号调试,它可能会显示信息:
以下模块也已构建 启用或不启用优化 调试信息: assembly.dll
至 调试此模块,更改其项目 将配置构建到调试模式。至 压制此消息,禁用 '如果启动时没有用户代码,则发出警告' 调试器选项。
我也想知道VS从pdb和程序集中获取哪些信息来验证它们。
是否有(托管)API?甚至是不受管理的?
有什么想法吗?
答案 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