使用与二进制文件不同时生成的 pdb 文件进行调试。可能吗?

问题描述 投票:0回答:2

我倾向于认为这是不可能的。 我知道生成的二进制文件及其对应的 pdb 文件在编译时是绑定的。

今天我必须尝试帮助调试产品的一个非常旧版本的转储,显然 pbd 是在另一个日期生成的。

Visual Studio 忠实地告诉我 pbd 与我的二进制文件不对应。 (当我不在良好的二进制文件中时,我总是感激它为我节省的所有时间)。


但是,这次的问题不一样了:我确实想使用与编译时无关的 pdb 文件。

think 我记得我有时读到过,如果源代码相同,则可以利用这样的 pdb:我认为它涉及解析 pdb,或更正 pdb 本身内部的一些时间戳值数据或类似的东西那个……随便。我可能真的错了。

所以,即使这很难,有没有办法使用这样的 pdb 文件,这些文件不是与二进制文件同时生成的,而是具有相同的代码?

visual-studio debugging windbg pdb-files
2个回答
4
投票

.symopt+ 0x40(加载不匹配的 pdb)


1
投票

从同一来源简单地重建 PDB 可能不会产生准确的结果。考虑同时更新环境。您可能使用更新版本的编译器等

也就是说,有

.symopt+ 0x40

对于@blabb 已经提到的 WinDbg。

如果您更喜欢在 Visual Studio 中进行调试,可以使用此修改时间戳的工具:Chkmatch.

chkmatch -m <exe> <pdb>

将信息从可执行文件复制到 PDB。这有点危险:如果您忘记这是一个修改过的 PDB,您以后可能会寻找不存在的错误。我推荐

  • 保留原始的、不匹配的 PDB
  • 创建用于复制 PDB 并修改它的批处理文件
  • 每天删除修改过的PDB

调用批处理文件会提醒您在调试会话期间可能会得到不准确的结果。

© www.soinside.com 2019 - 2024. All rights reserved.