117.你知道Debug和Release的区别是什么吗?
117.你知道Debug和Release的区别是什么吗?
Debug 用于调试,带调试信息、不优化;Release 用于发布,无调试信息、全优化、体积小、速度快。
1. 核心区别(最常考 5 点)
- 优化级别
- Debug:不优化,方便逐行调试
- Release:高度优化(速度 / 体积最优)
- 调试信息
- Debug:包含 pdb 调试符号,可断点、单步、查看变量
- Release:不含调试信息,文件更小
- 代码检查
- Debug:会做越界、未初始化、栈完整性检查
- Release:不做额外检查,直接执行
- 宏定义
- Debug:定义 _DEBUG
- Release:定义 NDEBUG(assert 失效)
- 运行表现
- Debug:体积大、运行慢
- Release:体积小、运行快
2. 经典坑点:Debug 正常、Release 崩溃
常见原因:
- 变量未初始化(Debug 自动清 0,Release 随机值)
- 代码被优化掉
- assert 在 Release 中不执行
- 内存越界、野指针(Debug 容错性更强)
3. 一句话背诵版
Debug 带调试信息、不优化、安全慢;
Release 无调试信息、全优化、小而快;
两者宏不同、优化不同,容易出现 Debug 正常 Release 异常。

浙公网安备 33010602011771号