【发布时间】:2013-11-07 21:06:11
【问题描述】:
我在一个大型 VB6 应用程序上工作,我在解决关闭程序时出现的一些错误时遇到了很多困难。
所有这些错误都出现在最后一个代码行之后,因此我无法调试。我知道这些错误是“自动化错误”。我尝试在 Visual Studio 2010 中附加该过程,但出现以下错误: 在 VB6.EXE 中出现 0x7643c41f 的例外情况: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=????????
【问题讨论】:
-
不,但我知道程序想要访问一个不再存在的内存指针。我不想知道指针中的值是什么,而是什么 dll 试图访问这个指针。
-
VMMap 将显示 DLL 的位置。您可能会发现 0x7643c41f 在系统 DLL 中
-
当您说“我尝试在 Visual Studio 2010 中附加该进程”时,这是否意味着您能够附加或无法附加?如果您能够附加,那么只需查看线程堆栈。
-
是的,我可以附加到进程,但我没有堆栈跟踪,因为我的程序是在 VB6 中