Debug 版本出错 Release 版本运行正常是怎么回事?

saiyaman5 2007-12-13 02:48:03
我做了个COM组件(DLL封装)里面有对话框,如果调用了组件创建了对话框,在退出时,Debug版本出错,程序崩溃,而在Release下却没事.在Debug 版本下调试,能插入断点的地方都试过了,都没出现错误.正因为这样,我但心以后用这个组件的时候可能会出现不可预料的错误.大家对这种现象怎么看,或者指导一下如何调试.
...全文
417 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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下调试一步步走也没出错,真是拿它没办法了.

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧