release版本和debug版本的程序有什么区别? 我的一个程序编译成release版本和debug版本都能正常运行,debug版本运行结果正确,单步执行也不会出错。可release版结果却出人意料,可又不能单步调试,不知是何原因。望高人指点! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 release版本取掉了debug信息,进行了进一步优化。如果你的程序时序逻辑或者空间使用稍有问题,就会看出来。因为没有调试信息,所以也不能单步了。 release没有包含debug信息查一查你代码里debug和release分开执行的代码部分 可以这么说:release版本取掉了debug信息,进行了优化。举个例子:那断言----Assertion来说,很多库函数本身的实现代码里,包含了很多的断言。通过ASSERT宏来声明这些断言,这个宏只有在程序的debug版里才有效。而在release版里它完全被忽略, 为的也就是减少系统的消耗,至于你说的debug版本运行结果正确,可release版却出错,可能的问题也就在这些断言里,特别是自己写的断言。比如ASSERT(***) 这***里不光是判断,如果还有其他创建之类的操作,到了release版,被忽略后,也就容易带来问题。 指针!我以前也遇见过这种问题同意loopyifly的 举个例子:int a;debug时a值恒定,总为cdcdcdcdrelease时a值不定,为当时内存值这时你在使用a时就会引起结果的不一致,甚至导致溢出!所以对变量初始化尤其是对指针,数组变量初始化是一个良好的习惯!debug与release的不同大多是因为你的程序代码写的不规范,不严谨而造成的。 See the two classic articles below, FYI: http://www.codeproject.com/debug/survivereleasever.asphttp://www.codeproject.com/debug/releasemode.asp zx_sanjin(1.5kg)说的对。是我忘记判断指针是否超出范围了。 VC的格式打印 如何将一个四面体循环细分为一个球体,具体什么样的算法 用nsis打包时如何获得安装文件名称 请问如何在win32 application中在调试窗口打印信息? 新手请教:ADO数据库问题(数据库为oracle) vc6中怎么看预编译后的文件? 蔡鸟啼菜问题,呵呵 串口枚举类找不到modem口,求助高手指点 请教哪位老师能详细讲解下DispatchMessage函数 ie的插件怎么做 请 zhouwenjie(小周) ( ) 信誉:100 过来领分 有关动态生成控件并显示的问题
因为没有调试信息,所以也不能单步了。
查一查你代码里debug和release分开执行的代码部分
release版本取掉了debug信息,进行了优化。举个例子:
那断言----Assertion来说,
很多库函数本身的实现代码里,包含了很多的断言。
通过ASSERT宏来声明这些断言,
这个宏只有在程序的debug版里才有效。
而在release版里它完全被忽略, 为的也就是减少系统的消耗,至于你说的debug版本运行结果正确,可release版却出错,
可能的问题也就在这些断言里,特别是自己写的断言。比如ASSERT(***) 这***里不光是判断,如果还有其他创建之类的操作,
到了release版,被忽略后,也就容易带来问题。
我以前也遇见过这种问题同意loopyifly的
debug时a值恒定,总为cdcdcdcd
release时a值不定,为当时内存值这时你在使用a时就会引起结果的不一致,甚至导致溢出!
所以对变量初始化尤其是对指针,数组变量初始化是一个良好的习惯!debug与release的不同大多是因为你的程序代码写的不规范,不严谨而造成的。
http://www.codeproject.com/debug/releasemode.asp
是我忘记判断指针是否超出范围了。