WinDbg不加载使用相同源创建但在不同于原始时间构建的符号文件

use*_*869 3 c# symbols windbg

我们发布了一个产品(C#.NET库)并没有存储库的pdb文件,假设我们总是可以使用相同的源代码生成符号文件.

现在,我们要分析正在使用我们的库的应用程序的崩溃转储(迷你转储)文件.由于我们没有存储pdb文件,因此我创建了一个使用相同源代码的新文件(在SVN中使用相同的标记).然后我尝试了WinDbg并提供了pdb文件,但是调试器不喜欢它.

由于源代码是相同的,我认为唯一的区别是构建完成的日期(我们使用相同的机器发布).这真的会导致调试器无法加载符号文件吗?WinDbg如何识别符号文件?

如果我确定符号文件与原始符号文件相同(日期除外),是否有办法强制WinDbg加载符号文件?

谢谢.

注意:如果我创建新版本并人为创建转储文件,则会正确加载符号.

Dan*_*ard 6

在不更改源的情况下重建将更改pdb文件.请参阅John Robbins的博客文章PDB文件:每个开发人员都必须了解血淋淋的细节.

你需要告诉WinDbg对它准备加载的符号文件不那么挑剔.来自(稍微老一点)的WinDbg帮助文件:

SYMOPT_LOAD_ANYTHING
Run Code Online (Sandbox Code Playgroud)

此符号选项在尝试匹配符号时减少符号处理程序的挑剔.

默认情况下,此选项处于关闭状 调试器运行后,可以分别使用.symopt + 0x40或.symopt-0x40打开或关闭它.