求助高手,debug不行,但是release却没有一点问题,这个是为什么?

njtlxm 2004-08-05 11:08:57
在release里没有一点问题,但是在debug里却会在程序初始化时出现两个报警错误提示,电机“忽略”之后可以继续运行,没有,但是却出现一些奇怪的错误。按理说,release会比debug严格一些,而我却得到相反的结果。我看了一下debug里面的错误,好像是说获取当前线程后,断言错误。如何解决这个问题呢?各位如果以前遇到过这样的问题,请说说自己是怎么解决的好吗?
...全文
239 20 点赞 打赏 收藏 举报
写回复
20 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Kudeet 2004-08-06
你可以到 http://search.csdn.net/search.asp 去找看看以前的帖子
  • 打赏
  • 举报
回复
coolali 2004-08-06
这类问题碰到的人一定很多,我记得好像有个帖子专门讨论,你可以搜索一下。
关注最终结果。
  • 打赏
  • 举报
回复
toxyboy 2004-08-06
Mark
  • 打赏
  • 举报
回复
悲酥清风 2004-08-06
设置环境的问题?
  • 打赏
  • 举报
回复
huaboy408 2004-08-06
软件开发一般是在DEBUG版本下面调试,等没有错误在编译成RELEASE版本发布
  • 打赏
  • 举报
回复
carbon107 2004-08-06
在degug版本下测试程序无任何错误时,再用release的版本运行才是
  • 打赏
  • 举报
回复
无敌魔仙 2004-08-06
找到问题了没?
  • 打赏
  • 举报
回复
eastred 2004-08-06
我有次写程序也碰到这种问题~
后来发现是一个int变量忘了初始化~_~
  • 打赏
  • 举报
回复
njtlxm 2004-08-06
另外,我对上面有位朋友的建议回复一下:我使用的是正版的vc,单位买的。vc本身应该没有任何问题。

我刚才调试了一下,在debug版本下出现的出错提示为:
file:appcore.cpp
line:85
按“重试”进入后,发现是appcore.cpp85行的这一句出错:ASSERT(AfxGetThread()==NULL);
继续运行,在appcore.cpp的第92行又出现一次错误告警:ASSERT(AfxCurrentWinApp=NULL)

需要说明的是:
我主要开发的是一个dll,然后在新建的对话框工程里使用这个dll,以上出现两次告警只是在对话框程序刚刚运行的时候出现的。
而在对话框工程的初始化时,我除了调用CoInitialize(NULL)进行初始化以外,没有其他特殊的操作。为什么会出现这个现象呢?
  • 打赏
  • 举报
回复
njtlxm 2004-08-06
谢谢楼上的几位。但是我有一些情况需要说明一下:
我做的是一个dll,使用了ole db,作用相当于一个数据库访问的中间件。这个Release版本已经稳定运行两年多了,还没有发现什么不稳定的现象。
但是问题不在这里,而是使用这个dll的工程。
同样都使用这个dll的release版本,如果新创建一个工程,使用这个dll,新工程如果运行debug版本,就会出现两次错误告警,点击忽略后,有些工程能够正常运行,有一些就不能得到正确的结果,但是在新工程的release版本中,一点问题都没有。奇怪了
  • 打赏
  • 举报
回复
njtlxm 2004-08-06
狂晕!
我新建一个DLL的工程,一切问题就搞定了,真是tmd郁闷。

我先把这个帖子放着,希望别人不要犯我这种弱智错误。

过几天揭帖。
  • 打赏
  • 举报
回复
njtlxm 2004-08-06
以前的讨论好像对我这个问题无效。
我刚才把调用工程设置成mfc静态连接,这个报警消失了。但是在实际调用的时候,我有一个函数是传入了CString的引用,在函数内部将返回值赋值给这个引用变量,这个时候却出错,为什么?同样,release可以正确返回。
  • 打赏
  • 举报
回复
Kudeet 2004-08-05
不能通过ASSERT的检查,在Release中没有ASSERT,所以没有错,不过release版本会不稳定的,有时会出错的

可以设置断点跟踪一下。

有可能是把函数放在ASSERT里面运行,可是ASSERT在release下是不被运行的,所以可能有些变量或窗口没有创建,所以就会出现这种错误,仔细检查一下有没有这样的错误呢
  • 打赏
  • 举报
回复
sworldc 2004-08-05
调试宏的问题吧
  • 打赏
  • 举报
回复
社会栋梁 2004-08-05
楼上说的都对
不过,我有一次遇到的情况是
我在一台机器上用release编译后把代码交给另一个人在另一台机器上编译
release版没有问题,但用debug就不行了,把原来release里的.obj文件删除
在release又不行了,错误是路径问题

原来vc会使用原来编译的.obj文件,虽然代码文件的位置改变了
  • 打赏
  • 举报
回复
flyelf 2004-08-05
对于debug版本,可以跟踪一下是否出现了什么问题
  • 打赏
  • 举报
回复
holyeagle 2004-08-05
debug下会有断言警告,提示有些地方除错,可以方便调试。如果有断言错误,一般就是程序有问题,需要检查。比较常见的句柄无效,参数非法等等

release不会做验证的动作,会直接崩溃,
  • 打赏
  • 举报
回复
mingbao 2004-08-05
呵呵, 可能是因为你用了 Visual C++ 创天中文企业版,那个中文版问题太多.
如果是的话, 一般都会出这个问题,我有不少同学也遇到过. 后来用了英文版都好了

建议你快换成英文版, 绝对不会再出这种问题.
  • 打赏
  • 举报
回复
xubin_sh 2004-08-05
按理说,release会比debug严格一些
==============
其实在release中,基本上没有任何错误检查了
  • 打赏
  • 举报
回复
xubin_sh 2004-08-05
debug中有很多ASSERT的宏在起作用,说明你的程序有些问题
  • 打赏
  • 举报
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-08-05 11:08
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……