为什么我的VB6项目的PDB与生成的dll不匹配?

时间:2016-02-03 16:38:09

标签: vb6 debug-symbols pdb-files

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

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

>SYMCHK: FAILED files = 1

>SYMCHK: PASSED + IGNORED files = 0

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

可能导致此问题的原因以及我该怎么办?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-1)

我遇到了与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。
  5. 当你遇到这种情况时,通常采用一种防弹方式:

    • 清理解决方案
    • 删除每个项目中的每个bin和obj文件夹
    • 删除用于shadow-copy的任何临时文件夹
    • 执行重建