Debugging 如何调试VB6自动化错误

Debugging 如何调试VB6自动化错误,debugging,vb6,Debugging,Vb6,我在一个大型VB6应用程序上工作,我有很多困难来解决关闭程序时出现的一些错误 所有这些错误都出现在最后一行代码之后,因此我无法调试。我知道这些错误是“自动化错误”。我试图在Visual Studio 2010中附加该进程,但出现以下错误: 意外情况0x7643c41f dans VB6.EXE:0xC000008F:浮点不精确结果 如何使用内存指针知道错误发生在哪个DLL中 编辑:有关WinDbg的更多信息 (166c.2758): Access violation - code c000000

我在一个大型VB6应用程序上工作,我有很多困难来解决关闭程序时出现的一些错误

所有这些错误都出现在最后一行代码之后,因此我无法调试。我知道这些错误是“自动化错误”。我试图在Visual Studio 2010中附加该进程,但出现以下错误: 意外情况0x7643c41f dans VB6.EXE:0xC000008F:浮点不精确结果

如何使用内存指针知道错误发生在哪个DLL中

编辑:有关WinDbg的更多信息

(166c.2758): Access violation - code c0000005 (first chance)  
First chance exceptions are reported before any exception handling.  
This exception may be expected and handled.  
eax=01f8b004 ebx=00000800 ecx=01f16ce4 edx=00000000 esi=01f8b004 edi=006d0a68  
eip=729926a6 esp=0018f648 ebp=75850dfb iopl=0         nv up ei pl zr na pe nc  
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010246  
MSVBVM60!IID_IVbaHost+0x24066:  
729926a6 ff7174          push    dword ptr [ecx+74h]  ds:002b:01f16d58=????????  

这部分引起了我的注意:

"Floating-point inexact result."
试试这个:

转到: 项目>项目属性>编译>高级优化


检查“删除浮点错误检查”和“允许未舍入的浮点操作”框是否未勾选。如果勾选了它们,请取消勾选,保存并重新运行项目。这允许Visual Basic在浮点数据类型及其相关表达式崩溃编程环境之前检查它们是否存在问题。然后,您可以修复它发现的错误(如除以零),而不是简单地跳过这些错误,并可以在您满意所有问题都已解决时选择将优化设置回原位。

您是否尝试过VMMap:否,但我知道程序希望访问不再存在的内存指针。我不想知道指针中的值是什么,但尝试访问此指针的dll是什么。VMMap将显示dll的位置。您可能会发现0x7643c41f位于系统DLL中,但当您说“我试图在Visual Studio 2010中附加进程”时,这是否意味着您能够或无法附加进程?如果您能够附加,那么只需查看线程堆栈。是的,我可以附加到进程,但我没有堆栈跟踪,因为我的程序在VB6中。您的程序中有任何子类化代码吗?尝试暂时删除它,看看错误是否仍然发生。不,我没有任何子类代码。事实上,我收到的最后一条错误消息是在VB6虚拟机dll中,但我不知道如何看到VB6VM dll执行的代码行。所以我不知道这是DLL中的错误还是我们在DLL中执行的代码中的错误。。。