我有一个旧的VB6应用程序,它使用了很多第三方组件,不仅是视觉,还有音频处理,tcp / udp,VoIP等......
当我将应用程序作为EXE运行时(例如,不在VB6 IDE中),有时会使用GPF崩溃。它发生在程序运行了几天之后,当周围没有人时就会发生。
不幸的是,用户已截断屏幕截图,但无论如何它通常没有任何有用的信息。崩溃的描述报告了崩溃发生在ntdll.dll
。
我的问题:
Optimize for Fast Code
。在这种情况下我该怎么办?答案 0 :(得分:2)
我会使用ntsd或windbg(link),并在任一用户模式调试器下运行应用程序(如果你不熟悉,它们有相同的命令 - ntsd是一个控制台调试器,而windbg是一个GUI调试器)。两者都有很多命令行选项,但是ntsd appname.exe就足以开始了。使用.sympath命令将调试器指向符号,您应该在路上。崩溃发生时,您可以检查变量和堆栈,以找出可能缺失的内容。
顺便说一句 - 上面的错误是一个无效的句柄错误,所以程序可能会将一个陈旧或NULL句柄传递给一个windows函数。调试器会告诉你更多。