我倾向于认为这是不可能的。 我知道生成的二进制文件及其对应的pdb文件在编译时绑定。
今天我必须尝试帮助调试产品的旧版本的转储,显然pbd已经在另一个日期生成了。
Visual Studio忠实告诉我pbd与我的二进制文件不对应。 (而且我总是非常感激地感谢它,因为当我不在好的二进制文件时,它为我节省了所有时间)。
<小时/> 但是,这次问题不一样:我确实想使用与编译时无关的pdb文件。
我想我记得我曾经读过,如果源代码是相同的,有可能利用这样的pdb:我认为它涉及解析pdb,或者纠正一些时间戳值数据在pdb本身或类似的东西......无论如何。我可能真的错了。
所以,即使它很难,有没有办法使用这些pdb文件,这些文件不是与二进制文件同时生成的,而是使用相同的代码?
答案 0 :(得分:4)
.symopt + 0x40(加载不匹配的pdb)
答案 1 :(得分:1)
简单地从同一来源重建PDB可能无法产生准确的结果。考虑到同时更新环境。您可能使用较新版本的编译器等。
那就是说,有
.symopt+ 0x40
对于@blabb已经提到的WinDbg。
如果您更喜欢在Visual Studio中进行调试,可以使用此工具修改时间戳:Chkmatch。
chkmatch -m <exe> <pdb>
将可执行文件中的信息复制到PDB。这有点危险:如果你忘了这是一个修改过的PDB,你可能会在以后找到不存在的bug。我推荐
调用批处理文件会提醒您在调试会话期间可能会得到不准确的结果。