当我第二次运行一个VB6应用程序时,我得到了一个真正常见的自动化错误。但是,代码在VB6调试模式下运行良好。在我第二次编译了代码并运行了一些函数之后,我会遇到自动化错误2147417848 --被调用的对象已经与它的客户端断开了连接。
然后,我通过Visual调试了这个应用程序,得到了以下异常错误:
在vb6_2_12_2015.exe: 0xC0000005:访问冲突读取位置0x01289B5C中0x76B33E8D (oleau32.dll)的未处理异常。
是因为我的dll注册有问题吗?
发布于 2015-02-12 22:14:11
该消息意味着您的程序正在访问已释放或从未存在的内存(即变量或对象)(通常是因为创建失败而程序员没有检查)。64K以下的内存地址表示分配失败。
首先,编译您的程序而不需要优化和调试信息。当您崩溃时,做一个堆栈跟踪,它将列出函数和参数。
还可以在调试器中启动。
windbg或ntsd (ntsd是一个控制台程序,可能已安装)。这两种方法都来自Windows调试工具。
下载并安装Windows调试工具
http://msdn.microsoft.com/en-us/windows/hardware/hh852363
安装Windows,但只需选择调试工具。
在C:\中创建一个名为符号的文件夹
启动Windbg。文件菜单-符号文件路径并输入
srv*C:\symbols*http://msdl.microsoft.com/download/symbols
然后
windbg -o -g -G c:\windows\system32\cmd.exe /k batfile.bat
您可以按F12
来停止它,kb
将显示调用堆栈(g
继续该程序)。如果有错误,它也会停止并显示它们。
键入lm
以列出加载的模块,键入x *!*
以列出符号,键入bp symbolname
以设置断点
da displays the ascii data found at that address
dda displaysthe value of the pointer
kv 10 displays last 10 stack frames
lm list modules
x *!* list all functions in all modules
p Step
!sysinfo machineid
如果用VB6编程,那么这个环境变量link=/pdb:none将符号存储在dll中,而不是单独保存文件。确保编译程序时没有优化,并勾选创建符号调试信息的框。都在项目的属性的编译选项卡上。
此外,CoClassSyms (microsoft.com/msj/0399/msj/hood0399.aspx)可以从类型库中生成符号。
。
https://stackoverflow.com/questions/28482023
复制相似问题