我有一个应用程序,一旦编译运行完全正常。但是,如果我在VB6环境中启动它,它会不断地和随机地崩溃IDE,但只有当我对应用程序采取行动时(例如将鼠标移到它上面,点击某些东西,移动窗口等等)
该应用程序做了许多与VB6无关的事情:SIP,虚拟声卡接口,音频编码/解码等......所以可能是这样,但崩溃似乎是随机的。
崩溃总是发生在vba6.dll模块中(至少是崩溃对话框所说的)。鉴于MS不再支持VB6,我该怎么做才能调试它?
我在XP和Win7上尝试过相同的结果。
答案 0 :(得分:3)
很可能某些API / DLL函数与VB IDE不兼容。我们有时为IDE和EXE编写不同的代码,因此我们的windows子类化和API绘图函数位于另一个dll(或ocx)中以避免崩溃。此外,我们在我们的软件中使用GPF处理程序(SetUnhandledExceptionFilter和相关的API函数),但这仅在EXE中打开 - 无论如何在IDE中都不起作用。我们的GPF主要出现在EXE中:)
对于调试,您可以只排除一些代码路径,特别是与Windows消息传递/子类化,全局挂钩,绘图和API回调相关的代码路径。您可以安装一些更好的调试器(甚至VC可用)来查看调用堆栈 - 有时这包括系统函数名称,提示错误操作。