【问题标题】:Why do my PDB's for my VB6 project not match the generated dll?为什么我的 VB6 项目的 PDB 与生成的 dll 不匹配?
【发布时间】:2016-05-12 23:35:06
【问题描述】:

我有一个 VB6 项目并已启用它来生成 pdb 文件(this 显示了如何执行此操作)。但是我不能用它们调试,当我用 symcheck 检查它们时,我得到了这个输出:

>SYMCHK: MyFile.dll         FAILED  - MyFile.pdb mismatched or not found

>SYMCHK: FAILED files = 1

>SYMCHK: PASSED + IGNORED files = 0

我已经检查了它找到 pdb 的详细输出(甚至将它移动到它检查的目录),但它似乎不想匹配。

什么可能导致这种情况,我该怎么办?

【问题讨论】:

  • 尝试较旧的 windbg/symchk 版本。我认为 MSFT 多年来更新了 PDB 格式,可能新版本无法理解 VB6 中的旧格式。
  • 您尝试过我的建议并使用过旧的调试器版本吗?
  • 可能是用户身份问题?

标签: vb6 debug-symbols pdb-files


【解决方案1】:

您可以尝试设置您的 VB6 项目的兼容性。 这里解释得很清楚: http://www.techrepublic.com/article/demystifying-version-compatibility-settings-in-visual-basic/

可能关联 GUID 的更改会导致 pdb 不匹配。

【讨论】:

    【解决方案2】:

    我在使用 Visual Studio 时遇到了同样的问题(在 c# 项目中)。因为您没有提供有关环境设置的很多信息,所以很难说出问题的确切原因。

    因为我没有使用 Visual Basic IDE 的经验,所以我将提出 Visual Studio 问题的原因。根据您的项目和设置,这可能适用于或不适用于您的 VB IDE。只需尝试将它们应用于它。

    以下是可能导致 Visual Studio 出现此行为的潜在问题的非详尽列表:

    1. 您的程序使用的 dll 是缓存的
      • 如果您的可执行文件正在使用 dll 的缓存版本(这也称为影子复制),则可能会发生这种情况。这些文件通常位于临时文件夹中。 要修复它,只需删除这些临时文件即可。
    2. 您的调试器正在尝试将模块和符号加载到错误的位置
      • 例如,可以将 Visual Studio 设置为在特定位置加载模块。
        要修复它,必须修复加载模块的位置(Ctrl + D + M 通常)。
    3. 您的清理/重建操作仅重建输出项目。
      • Visual Studio 可能只重建您的输出项目,而您想重建您的所有解决方案。
        要修复它,必须检查它是否正确地重建了整个解决方案。
        请注意,您的清理操作可能不会删除项目引用但与项目无关的引用。这些文件将保留在输出文件夹中,直到您将其删除。
    4. Visual Studio 已进入不稳定状态,可能需要重新启动。
      • 我数不胜数,我的 Visual Studio 实例的简单重新启动修复了大部分奇怪的编译时行为。
        要修复它,只需重新启动 Visual Studio。

    当你遇到这种情况时,通常一种防弹的方法是:

    • 清洁溶液
    • 删除每个项目中的每个 bin 和 obj 文件夹
    • 删除任何用于卷影复制的临时文件夹
    • 执行重建

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 2017-11-23
      • 2014-12-29
      • 1970-01-01
      • 2012-07-08
      相关资源
      最近更新 更多