【问题标题】:How to debug a GPF crash?如何调试 GPF 崩溃?
【发布时间】:2012-12-22 05:56:07
【问题描述】:

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

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

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

我的问题:

  1. 我需要什么工具来调试它?
  2. 我该如何开始?
  3. 我有 VB6 中编译的 PDB 文件。该应用程序编译为Optimize for Fast Code。在这种情况下我可以用它们做什么?

【问题讨论】:

  • 使用日志找出导致崩溃的代码部分?
  • @MarkJ 在我的代码中的任何地方都没有发现错误。它必须在运行时或第 3 方控件中发生。

标签: vb6 crash crash-dumps


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2015-12-30
    • 2017-02-22
    • 1970-01-01
    • 2019-08-26
    • 2011-11-10
    相关资源
    最近更新 更多