如何调试VB6崩溃?

时间:2011-06-09 04:53:24

标签: vb6 crash

我有一个应用程序,一旦编译运行完全正常。但是,如果我在VB6环境中启动它,它会不断地和随机地崩溃IDE,但只有当我对应用程序采取行动时(例如将鼠标移到它上面,点击某些东西,移动窗口等等)

该应用程序做了许多与VB6无关的事情:SIP,虚拟声卡接口,音频编码/解码等......所以可能是这样,但崩溃似乎是随机的。

崩溃总是发生在vba6.dll模块中(至少是崩溃对话框所说的)。鉴于MS不再支持VB6,我该怎么做才能调试它?

我在XP和Win7上尝试过相同的结果。

1 个答案:

答案 0 :(得分:3)

很可能某些API / DLL函数与VB IDE不兼容。我们有时为IDE和EXE编写不同的代码,因此我们的windows子类化和API绘图函数位于另一个dll(或ocx)中以避免崩溃。此外,我们在我们的软件中使用GPF处理程序(SetUnhandledExceptionFilter和相关的API函数),但这仅在EXE中打开 - 无论如何在IDE中都不起作用。我们的GPF主要出现在EXE中:)

对于调试,您可以只排除一些代码路径,特别是与Windows消息传递/子类化,全局挂钩,绘图和API回调相关的代码路径。您可以安装一些更好的调试器(甚至VC可用)来查看调用堆栈 - 有时这包括系统函数名称,提示错误操作。