学VC++这么久了,也不太明白Debug与Release方式有何本质上的区别吗?

Stefine 2005-11-08 03:46:23
就是调试版本上发布版本的区别吗?


哪位仁兄可以细讲下子

洗耳恭听ing
...全文
126 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Stefine 2005-11-10
  • 打赏
  • 举报
回复
首先谢谢上面的各位仁兄们

现在已差不多明白了,只是自己的C/C++水平还不够,有些还不能完全理解!

LookSail(老得牙都掉了还在学)
特别是这兄弟批评得对, 现在大三了,算起来应该学了一两年的VC了,可认真的去写代码的日子太少了,为了应付一些所谓的考试(软考,呵呵,混在垃圾大学里,得多拿两个文凭才行)

现在得静下心来学东西了,不能再像以前那么浮躁了!

两次感谢帮助我的楼上各位兄弟
rageliu 2005-11-08
  • 打赏
  • 举报
回复
debug会自动给初始化一些变量release不会
回调函数release会压2个参数入栈debug不会
太多了...
LookSail 2005-11-08
  • 打赏
  • 举报
回复
这是一开始就应该明白的事
yayaniuniu502 2005-11-08
  • 打赏
  • 举报
回复
关注
lixiaosan 2005-11-08
  • 打赏
  • 举报
回复
http://tech.ccidnet.com/art/1080/20050526/257719_1.html
oyljerry 2005-11-08
  • 打赏
  • 举报
回复
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不讨论)

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

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

实际上,Debug 和 Release 并没有本质的界限,他们只是一组编译选项的集合,编译器只是按照预定的选项行动。事实上,我们甚至可以修改这些选项,从而得到优化过的调试版本或是带跟踪语句的发布版本。
oyljerry 2005-11-08
  • 打赏
  • 举报
回复
Debug有很多加入的调试信息 入Assert宏等,为程序员调试版本
Release为最终发布版,去除了很多编译器加入的调试代码,同时进行了优化

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧