Debug和Release有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Debug和Release有啥区别相关的知识,希望对你有一定的参考价值。

Debug 为调试版本,Release 为发布版本,从开发者和用户视角看,他们的区别如下:

一、从开发者视角,Debug和Release的区别,主要是编译器的选项不同,Debug 包含调试信息,并且不作任何优化,便于程序员调试程序。Release 往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。

Debug 版本 相关参数解释:
参数 含义
/MDd /MLd 或 /MTd 使用 Debug runtime library(调试版本的运行时刻函数库)
/Od 关闭优化开关
/D "_DEBUG" 相当于 #define _DEBUG,打开编译调试代码开关(主要针对assert函数)
/ZI
创建 Edit and continue(编辑继续)数据库,这样在调试过程中如果修改了源代码不需重新编译
GZ 可以帮助捕获内存错误

Release 版本 参数含义
/MD /ML 或 /MT 使用发布版本的运行时刻函数库
/O1 或 /O2 优化开关,使程序最小或最快
/D "NDEBUG" 关闭条件编译调试代码开关(即不编译assert函数)
/GF 合并重复的字符串,并将字符串常量放到只读内存,防止被修改

二、使用者视角,我们下载软件的时候,一般应该选择Release版。Debug一般比测试版更粗,主要提供给高级测试者反馈修改意见。
参考技术A 当编译和执行一个工程时,可以在Debug和Release两种配置下执行。

Debug模式用于调试程序,这是个受保护的运行环境,它将告诉你程序是否有泄露,在运行时也能对特定函数的结果进行检查。然而它生成的可执行文件运行较慢。
因此当你的应用经过测试准备投入使用时,你应该在Release模式下进行编译,这将生成供最终用户使用的可执行文件。

简单的说就是Debug下可以进行调试,查bug,改错,且运行较慢。
虽然Release下也可以打断点,但是有时候有些变量的值在Release下是看不见的。调试的话应该用Debug。

注意:经常发生Debug模式下运行正常而Release模式出错的情况,因此要进行更多测试来找到潜在的Bug。

完全手打的,望采纳。
参考《OpenCV计算机视觉编程手册》本回答被提问者采纳

以上是关于Debug和Release有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Debug和Release有啥区别

.net 项目在Debug模式下打包跟在release模式下打包有啥区别?

Flutter在Debug和Release下分别使用啥编译模式,有啥区别?

VS中Debug模式和Release模式的区别

dev c++ 中的 gcc4.8.1 profiling / release / debug 三种编译器 有啥区别么?

有啥方法可以同时构建 Release 和 Debug 吗?