【问题标题】:DLL with invalid PDB path具有无效 PDB 路径的 DLL
【发布时间】:2010-08-20 13:35:31
【问题描述】:

我正在尝试让我们的一款旧游戏正常运行,以便我们重新发布它。除了当我最初运行可执行文件时,它还有效,我收到以下错误消息:

"驱动器中没有磁盘。请将磁盘插入驱动器\Device\Harddisk4\DR4"

然后当我点击“取消”或“继续”时,它会继续加载游戏并正常工作。

所以我将 exe 加载到反汇编程序中,结果是在尝试加载 granny2.dll 的符号时。这是调用堆栈:

callstack image http://www.dracan.co.uk/temp/grannybugcallstack.png

所以它试图从我没有的驱动器/目录中加载 granny2.pdb(它将成为 Granny 3D 库的一部分)。

在我们的游戏目录中,有 granny2.dll。所以我通过 Visual Studio 的 dumpbin 实用程序运行它,并在其中引用了该路径:

Debug Directories

    Time Type       Size      RVA  Pointer
-------- ------ -------- -------- --------
40493D28 cv           37 00000000    5A400    Format: NB10, 3FF4AC61, 32, h:\build\granny\release\rt\granny2.pdb

我从各种在线资源中获取了这个 DLL 的几个版本,它们似乎都在 DLL 中具有相同的 PDB 路径。

任何人都可以想办法绕过这个错误消息吗?

我正在运行 Windows7。一位同事正在运行 Vista,并且刚刚开始看到它,但上周运行它而没有收到错误。不幸的是,他想不出从那以后他的电脑发生了什么变化。另一位正在运行 XP 的同事根本没有收到此错误

感谢您对此的任何帮助,
丹。

【问题讨论】:

  • 我不明白。该调用堆栈全部与调试帮助库有关;这只是在调试时发生吗?
  • 不,它也发生在调试器之外。我只是将它加载到反汇编程序中,以找出代码调用了什么来导致该消息框出现。一旦该消息框出现,我在反汇编程序中点击暂停,这就是它给我的调用堆栈。也许这是一条红鲱鱼 - 但它在调试器内外都是相同的错误消息。
  • 所以游戏本身正在尝试加载自己的调试符号?对我来说听起来有点奇怪。执行此操作的代码是什么 - 游戏本身还是 Granny 3D 库?
  • 我假设游戏正在尝试加载 DLL 的调试符号。虽然我不确定为什么 DLL 和我们的游戏都是非调试编译的。不幸的是,我们游戏的 Exe 是几年前编译的(我没有参与其中)。
  • 那么 SymInitialize 是从哪里调用的呢?堆栈回退得不够远。你有游戏的源代码吗?如果是这样,您可以使用 SetErrorMode 并希望这会摆脱对话框。不过,我仍然认为有人试图加载符号是相当奇怪的。

标签: windows debugging dll


【解决方案1】:

既然你说这可以在你同事的 XP 机器上运行,你可以尝试在 win 7 的 XP 虚拟化模式下运行它。

【讨论】:

  • 我在兼容模式下试过了,没啥区别。刚刚尝试安装 Virtual PC 的东西(我想这就是你的意思),但它现在要求我第三次重新启动 - 在这台慢速机器上大约需要半小时。鉴于即使它确实在虚拟化模式下工作,它也不会真正帮助我们解决问题——那么我真的不值得浪费时间尝试测试它。除非我错过了这个测试的一点?
  • 我的意思是win 7机器上的兼容模式,它可以在更高的版本上使用,比如终极版。它将使用 CPU 虚拟化(如果可用),这样它就不会减慢您的机器速度。是的,它试图在游戏中加载 pdb 很奇怪。您是否在同事的机器上检查过相同的(granny.dll)?尝试获取他的 dll 版本并使其工作。
  • 我看到没有太多人抱怨这个。因此,这可能是一次性配置问题。请看看这是否有帮助,虽然看起来它们只是解决 dll 问题的通用步骤,而不是特定于 granny.dll:pcsupport.about.com/od/findbyerrormessage/a/…
【解决方案2】:

您可以尝试联系 Granny 3D 的供应商,因为它是 12000 美元的产品。他们可能愿意并且能够提供一些技巧来解决这个问题。

【讨论】:

    【解决方案3】:

    如 NB10 标志所示,该 DLL 已使用 Visual Studio 6.0 构建。

    【讨论】:

      猜你喜欢
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-08
      • 2020-07-10
      • 1970-01-01
      相关资源
      最近更新 更多