首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >直接运行编译的VB6 exe -自动化错误2147417848 &访问冲突读取位置0x01289B5C

直接运行编译的VB6 exe -自动化错误2147417848 &访问冲突读取位置0x01289B5C
EN

Stack Overflow用户
提问于 2015-02-12 15:59:41
回答 1查看 607关注 0票数 0

当我第二次运行一个VB6应用程序时,我得到了一个真正常见的自动化错误。但是,代码在VB6调试模式下运行良好。在我第二次编译了代码并运行了一些函数之后,我会遇到自动化错误2147417848 --被调用的对象已经与它的客户端断开了连接。

然后,我通过Visual调试了这个应用程序,得到了以下异常错误:

在vb6_2_12_2015.exe: 0xC0000005:访问冲突读取位置0x01289B5C中0x76B33E8D (oleau32.dll)的未处理异常。

是因为我的dll注册有问题吗?

EN

回答 1

Stack Overflow用户

发布于 2015-02-12 22:14:11

该消息意味着您的程序正在访问已释放或从未存在的内存(即变量或对象)(通常是因为创建失败而程序员没有检查)。64K以下的内存地址表示分配失败。

首先,编译您的程序而不需要优化和调试信息。当您崩溃时,做一个堆栈跟踪,它将列出函数和参数。

还可以在调试器中启动。

windbg或ntsd (ntsd是一个控制台程序,可能已安装)。这两种方法都来自Windows调试工具。

下载并安装Windows调试工具

http://msdn.microsoft.com/en-us/windows/hardware/hh852363

安装Windows,但只需选择调试工具。

在C:\中创建一个名为符号的文件夹

启动Windbg。文件菜单-符号文件路径并输入

代码语言:javascript
运行
复制
srv*C:\symbols*http://msdl.microsoft.com/download/symbols

然后

代码语言:javascript
运行
复制
windbg -o -g -G c:\windows\system32\cmd.exe /k batfile.bat

您可以按F12来停止它,kb将显示调用堆栈(g继续该程序)。如果有错误,它也会停止并显示它们。

键入lm以列出加载的模块,键入x *!*以列出符号,键入bp symbolname以设置断点

代码语言:javascript
运行
复制
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)可以从类型库中生成符号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28482023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档