C++中debug和release的区别? 为什么debug没问题的程序release之后就出问题了?
3个回答
展开全部
我经验:release采用的优化策略与Debug不同造成出问题的情况多些,实际上,这两种编译的参数是人工可配置的,完全可配置得一样来测试。
遇到题目中情况时,先将Release版中优化部分暂时去掉,看是否优化会引起问题,比如,你程序中给通讯或某些低速设备初始化时采用的是自己写的循环计算方式实现的,那么就有可能受优化的影响,原先运行1毫秒的循环优化后只运行500微秒了;还有就是,对于工程中每个程序在编译时可以选用不同的优化策略,可以将需要进行速度优化的程序单独分出来,设置只针对这些程序进行优化,其他的可以排除优化带来的干扰;最后,Debug版程序因为程序中有一大堆调试信息,对错误的冗余也大些,那些将将越界访问的"野指针"也许不会引起问题,这时将程序部分设置成release的优化后再调试可以将问题点逐渐找出来。
遇到题目中情况时,先将Release版中优化部分暂时去掉,看是否优化会引起问题,比如,你程序中给通讯或某些低速设备初始化时采用的是自己写的循环计算方式实现的,那么就有可能受优化的影响,原先运行1毫秒的循环优化后只运行500微秒了;还有就是,对于工程中每个程序在编译时可以选用不同的优化策略,可以将需要进行速度优化的程序单独分出来,设置只针对这些程序进行优化,其他的可以排除优化带来的干扰;最后,Debug版程序因为程序中有一大堆调试信息,对错误的冗余也大些,那些将将越界访问的"野指针"也许不会引起问题,这时将程序部分设置成release的优化后再调试可以将问题点逐渐找出来。
展开全部
debug生成的程序会有很多调试信息,release的程序相比debug要小很多,如果你的release版本出现不能运行的情况,可能的原因是库少了,还有可能是你代码的问题,检查一下哪里有内存泄漏的地方
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有很大区别。debug会加入很多保护措施,比如数组越界预防未初始化数值,赋值为CC等等release则不会;
debug几乎不进行优化,release则尽可能优化,有些优化的结果不是你想要的!
debug几乎不进行优化,release则尽可能优化,有些优化的结果不是你想要的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询