如何调试GPF崩溃?

时间:2012-12-22 05:56:08

标签: vb6 crash crash-dumps

我有一个旧的VB6应用程序,它使用了很多第三方组件,不仅是视觉,还有音频处理,tcp / udp,VoIP等......

当我将应用程序作为EXE运行时(例如,不在VB6 IDE中),有时会使用GPF崩溃。它发生在程序运行了几天之后,当周围没有人时就会发生。

不幸的是,用户已截断屏幕截图,但无论如何它通常没有任何有用的信息。崩溃的描述报告了崩溃发生在ntdll.dll

enter image description here

我的问题:

  1. 我需要哪些工具才能进行调试?
  2. 我该如何开始?
  3. 我有来自VB6编译的PDB文件。该应用程序已编译为Optimize for Fast Code。在这种情况下我该怎么办?

1 个答案:

答案 0 :(得分:2)

我会使用ntsd或windbg(link),并在任一用户模式调试器下运行应用程序(如果你不熟悉,它们有相同的命令 - ntsd是一个控制台调试器,而windbg是一个GUI调试器)。两者都有很多命令行选项,但是ntsd appname.exe就足以开始了。使用.sympath命令将调试器指向符号,您应该在路上。崩溃发生时,您可以检查变量和堆栈,以找出可能缺失的内容。

顺便说一句 - 上面的错误是一个无效的句柄错误,所以程序可能会将一个陈旧或NULL句柄传递给一个windows函数。调试器会告诉你更多。

相关问题