社区
ATL
帖子详情
Debug 版本出错 Release 版本运行正常是怎么回事?
saiyaman5
2007-12-13 02:48:03
我做了个COM组件(DLL封装)里面有对话框,如果调用了组件创建了对话框,在退出时,Debug版本出错,程序崩溃,而在Release下却没事.在Debug 版本下调试,能插入断点的地方都试过了,都没出现错误.正因为这样,我但心以后用这个组件的时候可能会出现不可预料的错误.大家对这种现象怎么看,或者指导一下如何调试.
...全文
485
14
打赏
收藏
Debug 版本出错 Release 版本运行正常是怎么回事?
我做了个COM组件(DLL封装)里面有对话框,如果调用了组件创建了对话框,在退出时,Debug版本出错,程序崩溃,而在Release下却没事.在Debug 版本下调试,能插入断点的地方都试过了,都没出现错误.正因为这样,我但心以后用这个组件的时候可能会出现不可预料的错误.大家对这种现象怎么看,或者指导一下如何调试.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
saiyaman5
2007-12-13
打赏
举报
回复
解决了!
五岭散人的方法,定位到了ASSERT(pMap->LookupPermanent(hWndOrig) == NULL)
原来我程序中用了CButton的派生类,忘了在析构的时候加上m_hWnd=NULL;
"还有在另一组件中,中途用OnOK退出了一个模态对话框,在Debug版本下也出错,Release下正常,Debug下调试一步步走也没出错,真是拿它没办法了."
同样的断言,不过这是多线程的问题,谢谢各位,又让我长进不少!
ouyh12345
2007-12-13
打赏
举报
回复
在ide中调试,崩溃时查看堆栈,就能定位了
注意,要以com工程为主工程
tcxjia
2007-12-13
打赏
举报
回复
和这个问题类似的
各位大哥也去看下我的贴,帮帮忙
http://topic.csdn.net/u/20071213/14/1aa1eaf1-f458-4fab-a3cd-4e14f347274b.html
tcxjia
2007-12-13
打赏
举报
回复
不知道有没有问题
不过至少可以试一试,成功之后就反复测试,看可靠不?
saiyaman5
2007-12-13
打赏
举报
回复
五岭散人高见,我觉得也是这样的问题,但不知道如何定位到错误的地方.
tcxjia,这样改会不会不妥呀?
Allen_zhang
2007-12-13
打赏
举报
回复
用断点查不出来
弹出类似于下面信息的错误消息框
Debug Assertion Failed!
......
For information on how your program can cause an assertion
failure,see the visual C++ documentation on asserts.
怎么解决?
这样的问题很明显是一些断言错误。弹出这个断言的时候按重试就可以定位到断言的位置
看看是不是ouyh12345说说的问题
一般是二次释放的问题。
出错的代码类似于:
ASSERT(m_pHwnd != NULL);
if (m_pHwnd == NULL)
return FALSE;
崩溃后可以继续运行的
再通过堆栈来找问题的触发地方
你这里有对话框之类的很有可能是对话框重复性的destroy了
tcxjia
2007-12-13
打赏
举报
回复
你可以看看你的debug连接库设置,然后将Unicode Debug、Release MinSize模式的编译
设成同样。
ouyh12345
2007-12-13
打赏
举报
回复
一般是二次释放的问题。
出错的代码类似于:
ASSERT(m_pHwnd != NULL);
if (m_pHwnd == NULL)
return FALSE;
崩溃后可以继续运行的
saiyaman5
2007-12-13
打赏
举报
回复
用断点查不出来
弹出类似于下面信息的错误消息框
Debug Assertion Failed!
......
For information on how your program can cause an assertion
failure,see the visual C++ documentation on asserts.
怎么解决?
tcxjia
2007-12-13
打赏
举报
回复
你和我的问题差不多,也有区别
刚浏览网叶看到的,记下Debug时候的设置,然后在Release下设置成和Debug一样看看
Allen_zhang
2007-12-13
打赏
举报
回复
出错是什么信息?是不是一些断言来的?
snowbirdfly
2007-12-13
打赏
举报
回复
因为在Release下面会对代码进行优化,你设置断点看看什么地方出错了?
slshelly
2007-12-13
打赏
举报
回复
一般这种情况我就build All Project.在查找错误
saiyaman5
2007-12-13
打赏
举报
回复
还有在另一组件中,中途用OnOK退出了一个模态对话框,在Debug版本下也出错,Release下正常,Debug下调试一步步走也没出错,真是拿它没办法了.
程序在
Debug
模式下
运行
正常而在
Release
模式下
运行
出错
的解决方案
背景 以前在网上查资料的时候,无意中开发别人出现过这样的一个问题:“程序在
Debug
模式下
运行
正常,而在
Release
模式下
运行
出错
”。当时就下意识认为,这不可能,肯定是代码有改动了!但,当自己写的一个小程序出现了这个问题后,才开始正式这个问题。 现在把当时解决问题的一些思路总结下,分享给大家,希望大家少走弯路吧。 分析过程 在VS开发环境中,
Debug
模式和
Release
模式并没有本质上的区别,...
【
Debug
系列】
Debug
运行
正常但是
Release
出现错误的原因
目录 一、
Debug
和
Release
编译方式的本质区别 二、哪些情况下
Release
版会
出错
三、怎样“调试”
Release
版的程序 一、
Debug
和
Release
编译方式的本质区别
Debug
通常称为调试
版本
,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release
称为发布
版本
,它往往是进行了各种优化,使得程序在代码大小和
运行
速度上都是最优的,以便用户很好地使用。...
今天解决了的一个
DEBUG
运行
正常
RELEASE
出错
的问题!
今天正在做一个项目,进展顺利,但是编译成
RELEASE
版本
运行
却发现错误.自己弄了半天也没搞定.但最后还是看了一篇文章解决了.主要原因是因为
DEBUG
和
RELEASE
在解决函数掉用上的方式的不同.
DEBUG
是通过EBP来间接实现的.就象这样EBP+2 EBP+4 但在
RELEASE
下优化会省略 EBP 栈基址指针,这样通过一个全局指针访问栈.这样如果调用和实现方式不同就会使返回地址产生错误.比
Debug
与
Release
版本
的区别
本文主要包含如下内容: 1.
Debug
和
Release
编译方式的本质区别 2. 哪些情况下
Release
版会
出错
2. 怎样"调试"
Release
版的程序 -------------------------------------- 一、
Debug
和
Release
编译方式的本质区别
Debug
通常称为调试
版本
,它包含调试
Debug
运行
正常,
Release
版本
不能正常
运行
总结(转)
引言 如果在您的开发过程中遇到了常见的错误,或许您的
Release
版本
不能正常
运行
而
Debug
版本
运行
无误,那么我推荐您阅读本文:因为并非如您想象的那样,
Release
版本
可以保证您的应用程序可以象
Debug
版本
一样
运行
。 如果您在开发阶段完成之后或者在开发进行一段时间之内从来没有进行过
Release
版本
测试,然而当您测试的时候却发现问题,那么请看我们的调试规则1: 规则1: ...
ATL
3,248
社区成员
48,530
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章