我的一个程序编译成release版本和debug版本都能正常运行,debug版本运行结果正确,单步执行也不会出错。可release版结果却出人意料,可又不能单步调试,不知是何原因。
望高人指点!

解决方案 »

  1.   

    release版本取掉了debug信息,进行了进一步优化。如果你的程序时序逻辑或者空间使用稍有问题,就会看出来。
    因为没有调试信息,所以也不能单步了。
      

  2.   

    release没有包含debug信息
    查一查你代码里debug和release分开执行的代码部分
      

  3.   

    可以这么说:
    release版本取掉了debug信息,进行了优化。举个例子:
    那断言----Assertion来说,
    很多库函数本身的实现代码里,包含了很多的断言。
    通过ASSERT宏来声明这些断言,
    这个宏只有在程序的debug版里才有效。
    而在release版里它完全被忽略, 为的也就是减少系统的消耗,至于你说的debug版本运行结果正确,可release版却出错,
    可能的问题也就在这些断言里,特别是自己写的断言。比如ASSERT(***)  这***里不光是判断,如果还有其他创建之类的操作,
    到了release版,被忽略后,也就容易带来问题。
      

  4.   

    指针!
    我以前也遇见过这种问题同意loopyifly的
      

  5.   

    举个例子:int a;
    debug时a值恒定,总为cdcdcdcd
    release时a值不定,为当时内存值这时你在使用a时就会引起结果的不一致,甚至导致溢出!
    所以对变量初始化尤其是对指针,数组变量初始化是一个良好的习惯!debug与release的不同大多是因为你的程序代码写的不规范,不严谨而造成的。
      

  6.   

    See the two classic articles below, FYI: http://www.codeproject.com/debug/survivereleasever.asp
    http://www.codeproject.com/debug/releasemode.asp
      

  7.   

    zx_sanjin(1.5kg)说的对。
    是我忘记判断指针是否超出范围了。