求解VS2015的Debug和Release的区别
答案:2 悬赏:0 手机版
解决时间 2021-03-23 14:57
- 提问者网友:書生途
- 2021-03-23 03:29
求解VS2015的Debug和Release的区别
最佳答案
- 五星知识达人网友:行雁书
- 2021-03-23 04:41
dubug是有调试符号的. 还带有很多不需要的多余信息. 就是方便你调试. 你在调试和逆向工程的工具里打开debug版本的二进制文件很容易搞懂程序内容. 因为原函数名都在. 而且编译的时候基本不优化, 你原来写的什么样的结构生成的二进制就是什么样的结构.
release版本编译的时候是经过优化的. 有的时候编译器会更改你的程序逻辑和算法让程序在输出同样的结果的前提下运行更快. 而且有可能几个函数被合并在一起了(像自动inline一样). 而且release版本的二进制文件没有调试符号. 用第三方工具调试/逆向难度相对前者更大.
release版本编译的时候是经过优化的. 有的时候编译器会更改你的程序逻辑和算法让程序在输出同样的结果的前提下运行更快. 而且有可能几个函数被合并在一起了(像自动inline一样). 而且release版本的二进制文件没有调试符号. 用第三方工具调试/逆向难度相对前者更大.
全部回答
- 1楼网友:杯酒困英雄
- 2021-03-23 06:14
vs中的程序有debug和release两个版本,debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做
任何优化,以为开发
人员提供强大的应用程序调试能力。而release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信
息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。
debug程序通常比release程序要慢,尤其是处理视频方便release要比debug快很多。
debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc, 而release的赋值近似于随机。
代码存在错误在debug方式下可能会忽略而不被察觉到。debug方式下数组越界也大多不会出错,在release中就暴露出来了,这个找起来就比较难了。
只有debug版的程序才能设置断点、单步执行、使用 trace/assert等调试输出语句。realease不包含任何调试信息,所以体积小、运行速度快。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯