2012-12-22 119 views
1

我有一个使用了很多第三方组件,不只是视觉也是一个老VB6应用程序进行音频处理,TCP/UDP,网络电话等..如何调试GPF崩溃?

当我运行的应用程序作为一个EXE(如不在VB6 IDE中),它有时会与GPF一起崩溃。它发生在程序运行了好几天之后,发生在周围没有人的时候。

不幸的是,用户已经刮到了截图,但它通常没有任何有用的信息呢。坠毁事件的描述报告说,坠机事件发生在ntdll.dll

enter image description here

我的问题:

  1. 我需要什么工具来调试呢?
  2. 实际上,我怎么开始?
  3. 我在VB6编译的PDB文件。该应用程序编译为Optimize for Fast Code。在这种情况下我能和他们做什么?
+0

使用日志记录,以找出哪些部分代码导致崩溃? – MarkJ

+0

@MarkJ错误在我的代码中没有被捕获到。它必须发生在运行时或第三方控件中。 – AngryHacker

回答

2

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

BTW - 上述错误是无效的处理错误,所以程序很可能获得通过一个陈旧或NULL句柄窗口功能。调试器会告诉你更多。