我有一个应用程序,一旦编译后运行得很好。然而,如果我在VB6环境中启动它,它会不断地、相当随机地使集成开发环境崩溃,但只有当我对应用程序采取行动时(例如,将鼠标移到它上,单击某物,移动窗口,等等)。
这个应用程序做了很多与VB6无关的事情: SIP,虚拟声卡接口,音频编码/解码,etc...so它可能是这样的,但崩溃似乎是如此随机。
崩溃总是发生在vba6.dll模块中(至少崩溃对话框是这么说的)。鉴于MS不再支持VB6,我该如何对其进行调试?
我已经在XP和Win7上试过了,结果是一样的。
发布于 2011-06-09 15:09:27
很可能某些API/DLL函数与VB IDE不兼容。我们有时为IDE和EXE编写不同的代码,因此我们的windows子类化和API绘图函数位于另一个dll (或ocx)中,以避免崩溃。此外,我们在我们的软件中使用GPF处理程序(SetUnhandledExceptionFilter和相关的API函数),但这只在EXE中打开-无论如何都不能在集成开发环境中工作。我们的GPFs主要发生在EXE中:)
为了调试,你可以排除一些代码路径,特别是与windows消息传递/子类化、全局钩子、绘图和API回调相关的代码路径。你可以安装一些更好的调试器(即使VC是可用的)来查看调用堆栈-有时这包括系统函数名称,暗示错误操作。
https://stackoverflow.com/questions/6288247
复制相似问题