在release里没有一点问题,但是在debug里却会在程序初始化时出现两个报警错误提示,电机“忽略”之后可以继续运行,没有,但是却出现一些奇怪的错误。按理说,release会比debug严格一些,而我却得到相反的结果。我看了一下debug里面的错误,好像是说获取当前线程后,断言错误。如何解决这个问题呢?各位如果以前遇到过这样的问题,请说说自己是怎么解决的好吗?

解决方案 »

  1.   

    debug中有很多ASSERT的宏在起作用,说明你的程序有些问题
      

  2.   

    按理说,release会比debug严格一些
    ==============
    其实在release中,基本上没有任何错误检查了
      

  3.   

    呵呵, 可能是因为你用了 Visual C++ 创天中文企业版,那个中文版问题太多.
    如果是的话, 一般都会出这个问题,我有不少同学也遇到过. 后来用了英文版都好了建议你快换成英文版, 绝对不会再出这种问题.
      

  4.   

    debug下会有断言警告,提示有些地方除错,可以方便调试。如果有断言错误,一般就是程序有问题,需要检查。比较常见的句柄无效,参数非法等等release不会做验证的动作,会直接崩溃,
      

  5.   

    对于debug版本,可以跟踪一下是否出现了什么问题
      

  6.   

    楼上说的都对
    不过,我有一次遇到的情况是
    我在一台机器上用release编译后把代码交给另一个人在另一台机器上编译
    release版没有问题,但用debug就不行了,把原来release里的.obj文件删除
    在release又不行了,错误是路径问题原来vc会使用原来编译的.obj文件,虽然代码文件的位置改变了
      

  7.   

    不能通过ASSERT的检查,在Release中没有ASSERT,所以没有错,不过release版本会不稳定的,有时会出错的可以设置断点跟踪一下。有可能是把函数放在ASSERT里面运行,可是ASSERT在release下是不被运行的,所以可能有些变量或窗口没有创建,所以就会出现这种错误,仔细检查一下有没有这样的错误呢
      

  8.   

    谢谢楼上的几位。但是我有一些情况需要说明一下:
    我做的是一个dll,使用了ole db,作用相当于一个数据库访问的中间件。这个Release版本已经稳定运行两年多了,还没有发现什么不稳定的现象。
    但是问题不在这里,而是使用这个dll的工程。
    同样都使用这个dll的release版本,如果新创建一个工程,使用这个dll,新工程如果运行debug版本,就会出现两次错误告警,点击忽略后,有些工程能够正常运行,有一些就不能得到正确的结果,但是在新工程的release版本中,一点问题都没有。奇怪了
      

  9.   

    另外,我对上面有位朋友的建议回复一下:我使用的是正版的vc,单位买的。vc本身应该没有任何问题。我刚才调试了一下,在debug版本下出现的出错提示为:
    file:appcore.cpp
    line:85
    按“重试”进入后,发现是appcore.cpp85行的这一句出错:ASSERT(AfxGetThread()==NULL);
    继续运行,在appcore.cpp的第92行又出现一次错误告警:ASSERT(AfxCurrentWinApp=NULL)需要说明的是:
    我主要开发的是一个dll,然后在新建的对话框工程里使用这个dll,以上出现两次告警只是在对话框程序刚刚运行的时候出现的。
    而在对话框工程的初始化时,我除了调用CoInitialize(NULL)进行初始化以外,没有其他特殊的操作。为什么会出现这个现象呢?
      

  10.   

    我有次写程序也碰到这种问题~
    后来发现是一个int变量忘了初始化~_~
      

  11.   

    在degug版本下测试程序无任何错误时,再用release的版本运行才是
      

  12.   

    软件开发一般是在DEBUG版本下面调试,等没有错误在编译成RELEASE版本发布
      

  13.   

    你可以到 http://search.csdn.net/search.asp 去找看看以前的帖子
      

  14.   

    以前的讨论好像对我这个问题无效。
    我刚才把调用工程设置成mfc静态连接,这个报警消失了。但是在实际调用的时候,我有一个函数是传入了CString的引用,在函数内部将返回值赋值给这个引用变量,这个时候却出错,为什么?同样,release可以正确返回。
      

  15.   

    狂晕!
    我新建一个DLL的工程,一切问题就搞定了,真是tmd郁闷。我先把这个帖子放着,希望别人不要犯我这种弱智错误。过几天揭帖。