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

Sam*_*der 20 vb6 debug-symbols pdb-files

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

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

>SYMCHK: FAILED files = 1

>SYMCHK: PASSED + IGNORED files = 0
Run Code Online (Sandbox Code Playgroud)

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

可能导致这种情况的原因以及我该怎么办?

Joh*_*lip -1

我在 Visual Studio 中遇到了同样的问题(它是在 ac# 项目上)。由于您没有提供有关环境设置的大量信息,因此很难说出问题的确切原因。

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

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

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

通常,当您遇到这种情况时,一种万无一失的方法是:

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