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