【问题标题】:Tool to find if dll (or) exe and PDB file match [closed]查找dll(或)exe和PDB文件是否匹配的工具[关闭]
【发布时间】:2011-02-14 03:49:15
【问题描述】:

是否有任何工具可以检查 DLL 和 PDB 是否匹配?我需要调试一个进程,我不能使用错误的 PDB 并重新启动该进程。

【问题讨论】:

  • Windows 调试器(VS 和 windbg)将检查 DLL 和 PDB 是否匹配,并拒绝加载不匹配的 PDB。因此,这不是问题。

标签: debugging visual-c++


【解决方案1】:

有一个名为DIA2Dump 的 MSDN 示例工具应该能够转储 PDB 的内容。您应该能够使用此构造脚本来确定正确的源位置。

或者您可以设置自己的source server 来处理此问题。

【讨论】:

    【解决方案2】:

    发现chkmatch工具可以找到这个Check this out..

    【讨论】:

    • 这个工具看起来已经过时了
    • @denfromufa - 你能否扩展你的评论以表明你的意思 - 为什么这个工具不能执行给定的功能。说它已经过时并不能告诉我们出了什么问题。
    • ChkMatch 自 2004 年以来一直没有更新。这本身并不坏,但它有一个严重的错误,导致它在没有不匹配时报告 PDB 不匹配。问题是 PDB 中存储了两个“年龄”,而 ChkMatch 检查了错误的一个。这通常有效(这就是工具附带此错误的原因),但如果 PDB 已被源索引,则即使没有不匹配,也会报告不匹配。有关详细信息,请参阅我的博客上的此评论:randomascii.wordpress.com/2011/11/11/…
    【解决方案3】:

    This is a good article描述工具symchk.exe:

    您可以为此使用WINPDB:打开符号诊断消息,然后重新加载您的 符号:

    !sym noisy
    .reload -f your.dll
    

    输出显示正在尝试的 PDB 文件位置,并且将有 不匹配时发出警告

    【讨论】:

      【解决方案4】:

      我需要相同类型的工具,因此我决定自己编写。 DebugSignaturesComparer

      同时提供 CLI 和 GUI 版本。

      【讨论】:

        猜你喜欢
        • 2017-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-29
        • 1970-01-01
        • 2015-01-23
        • 2011-01-22
        • 1970-01-01
        相关资源
        最近更新 更多