关注+星标公众,不错过精彩内容

作者 | strongerHuang

微信公众号 | 嵌入式专栏

有很多软件集成开发环境(IDE),比如VS(VC)、IAR等,在创建工程时都会自动生成有Debug 和 Release两个版本。

有些小伙伴比较纳闷,Debug 和 Release两个版本到底有什么区别?

下面就来讲讲Debug 和 Release版本区别,及其相关的内容。

嵌入式专栏

1

关于Debug 和 Release版本

Debug,顾名思义,就是调试版本;

Release,即发布版本,或者说最终释放版本。

在一些项目中,会出现Debug 和 Release两个版本,比如:

IAR EWARM:

VS:

一些初学者可能会问,他们二者到底什么差异?

其实,Debug 和 Release两个版本其实主要就是工程配置不同。

我们这里拿IAR EWARM来说,主要是:Project -> Options 下面的配置选项不同:

嵌入式专栏

2

Debug 和 Release差异

Debug 和 Release两个版本,最根本的区别在于Debug版本多了一些与调试相关的配置内容。

1.生成调试信息

Debug版本通常会生成调试信息,而Release通常没有这些信息。

比如IAR EWRAM:

这里的“生成调试信息”其实包含了很多关于调试的信息,如果勾选会多出“.pbd”、 “.browse”、 “.linf”等与调试有关的信息。

补充①

“.pbd”、 “.browse”为浏览信息的文件,“.linf”为链接配置相关的文件。具体可以参看:IAR系列教程12_IAR文件类型描述

补充②

这个配置信息保存在“.ewp”(工程配置)文件下,包含了Debug 和 Release两个版本的配置信息:

<configuration><name>Debug</name>...配置</configuration><configuration><name>Release</name>...配置
</configuration>

你可以对比一下两个配置的差异,就知道二者的一些区别:

补充③

Keil MDK类似,也有类似的关于调试的配置:Projcet -> Options for Target:

2.预处理

Debug版本通常会有“DEBUG”相关的预处理(宏定义)

不知道大家经常用类似下面的调试宏定义没有:

#ifdef DEBUG//Debug调试版本相关的配置strongerHuang
#else//Release发布版本相关的配置strongerHuang
#endif

比如最常见的就是printf(打印信息),会通过“DEBUG”调试信息打开/关闭打印输出信息。

同理,这里与ASSERT断言类似,就是通过宏定义开关来打开/关闭,比如:

#ifdef  USE_FULL_ASSERTvoid assert_failed(uint8_t* file, uint32_t line);
#else#define assert_param(expr) ((void)0)
#endif

IAR 默认是在Release版本下预定义NDEBUG:

当然,这里全网可以自己根据自己实际情况进行定义。

3.其他不同

比如:在 Release 版本下增加一些axf转bin的命令

实际项目中,Debug 和 Release两个版本可能还有很多不同的配置,按理说“Options”下面的很多配置都可以不同。

嵌入式专栏

3

“版本”说明

这里是说的“版本”是指Debug 和 Release中的版本,并不是软件版本或其他什么版本。

Debug 和 Release都是自己配置的“版本”,只是有些IDE会自动生成这两个版本。

还是拿Keil 和 IAR 来说明,源码和工程结构都一样,只是配置不一样,简单来说,就是一个“克隆”版本。

1.IAR EWARM

Project -> Edit Configuartions:

2.Keil MDK

Project - Manage ->Project items:

相关的内容可以参看我的教程:

【专栏】IAR系列教程

【专栏】Keil系列教程

------------ END ------------

欢迎关注我的公众号:

欢迎关注我的视频号:

点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。 

软件项目中Debug 和 Release版本差异相关推荐

  1. 嵌入式开发 | 软件项目中 Debug 和 Release 版本的差异

    关注+星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang 很多集成开发环境(IDE),比如VS(VC).IAR等,在创建工程时都会自动生成有D ...

  2. VC中debug和release版本的区别

    vc中debug和release的不同 收藏  在使用VC开发软件的过程中,正当要享受那种兴奋的时候突然发现:release与debug运行结果不一致,甚至出错,而release又不方便调试,真的是当 ...

  3. VS中Debug和Release版本的区别

    之前写过一段代码,能在VS2013的Release下运行,但是不能在Debug下运行,所以又深入学习了一番,下面是学到的经验.(橙色表示引用,红色表示重点) VS中的程序有Debug和Release两 ...

  4. VS Debug和Release版本的区别

    VS Debug和Release版本的区别 1. 变量. 大家都知道,debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc(注1),而release的赋值 ...

  5. Debug和release版本区别 原码反码补码的转换及存储

    #define _CRT_SECURE_NO_WARNINGS 1  //Debug和release版本区别(VS2019版) //例子 #include<stdio.h> //int m ...

  6. 如何在软件项目中生成物料清单(SBOM)

    随着软件合规.断供.漏洞等风险日益受到重视,需求方会要求开发团队提供软件的详细信息. 常用的方法是,研发团队从源码.配置文件.生成交付物等处提取所需信息按需求方要求的格式形成报告.这种手工生成方法,不 ...

  7. C++ debug和release版本运行结果不一致浅析

    问题 最近在写 AVL 树的问题,其中涉及到大量的指针操作.但由于出现了 bug ,在没有修复时出现了单步调试和直接编译运行的结果不一样的情况.大致情况是:单步调试能够根据逻辑把结果运行出来,但是编译 ...

  8. [周年感悟]看软件项目中的四种角色

    工作一年了,这一年没像大学那样拼命的发帖,拼命的写博客.然而毕竟是过了一年了,便以此文纪念我逝去的2011年吧! 2011年3月份到公司实习,实习到5月,然后回学校做毕业设计,7月份正式入职.若是从实 ...

  9. 【软件工程】用户在软件项目中承担的工作

    终端用户 终端用户既指软件的最终操作者,也是软件工程内的一个概念,指终端用户的抽象集合,用于区分单纯使用软件的用户和进行软件开发的开发者.这种抽象主要在设计用户界面时有用,用于代表普通用户的共同特性. ...

最新文章

  1. ros安装orocos造成工作空间编译不通过
  2. Docker Compose安装
  3. c++ 新技能get 统计单词数
  4. java反射机制(三)---java的反射和代理实现IOC模式 模拟spring
  5. 油井在哪_身边榜样 | 张景岗:“油井越‘生气,自己越开心”
  6. tensorflow2 tensorboard可视化使用
  7. 百度地图no result available_【整理之路二】百度地图的路径规划和调用本机地图导航...
  8. 向高端应用进军 杰和推高计算四路服务器
  9. CorelDRAWX4的VBA插件开发(六)录制宏与调试
  10. C标准库stdio源码分析
  11. pH响应UV交联壳聚糖水凝胶/氨基葡聚糖基生物杂化水凝胶NMPA-CS壳聚糖水凝胶的制备
  12. 地震观测仪器的历史和发展趋势(二)
  13. 射手影音播放器android,射手影音播放器安卓版
  14. 微信跳一跳游戏的脚本
  15. 在Win10家庭中文版系统安装Hyper-V
  16. 读书笔记-effective STL
  17. 基于FaceNet的实时人脸识别训练
  18. 图像的阈值分割(Optimum Thresholding)
  19. python开发工具之神兵利器_擅用Python,强推这 7 种 神兵利器!
  20. css !important用法以及CSS样式使用优先级判断

热门文章

  1. linux fedora分区,新手指南:手把手教你安装Fedora
  2. 计算机网络面试必问必会知识点,涵盖计网90%问题,两万一千字总结;
  3. java+opencv修改白色背景为图片
  4. 重绘(Repaint)和回流(Reflow)
  5. [原]一屋不扫,何以扫天下
  6. 华为发布5G天线白皮书,提出三大重要产业趋势【附下载】
  7. 实验五 缺页中断统计
  8. 信道估计功率归一化设定原则
  9. vue 如何使用yarn
  10. 最新人格研究结果 使用演算法算出四种人格类型