VS中Dubug和Release的详细区别

首先,要明白Debug和Release到底是什么。

大神的说法:

       Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来。当然也可以提供其他的模式,例如自己定义一组编译选项,然后命名为MY_ABC等。习惯上,我们仍然更愿意使用VC已经定义好的名称。

CONCLUSION:Debug和Release只是两个编译的选项而已,是编译器所要进行工作的一系列指令,它们只是编译指令的集合的名称。


Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M)。至于是否需要DLL支持,主要看你采用的编译选项。如果是基于ATL的,则Debug和Release版本对DLL的要求差不多。如果采用的编译选项为使用MFC动态库,则需要MFC42D.DLL等库支持,而Release版本需要MFC42.DLL支持。Release不对源代码进行调试,不考虑MFC的诊断宏,使用的是MFC Release库,编译时对应用程序的速度进行优化,而Debug则正好相反,它允许对源代码进行调试,可以定义和使用MFC的 诊断宏,采用MFC Debug库,对速度没有优化。


CONCLUSION:Debug允许对源码进行调试,而Release则不对源码进行调试


二者的详细区分:

Debug:Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。

Release:Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。


(开发经验,非常重要!!!)

    1. 注意变量的初始化,尤其是指针变量,数组变量的初始化(很大的情况下另作考 虑了)。
    2. 自定义消息及其他声明的标准写法
    3. 使用调试宏时使用后最好注释掉
    4. 尽量使用 try - catch(...)
    5. 尽量使用模块,不但表达清楚而且方便调试。

猜你喜欢

转载自blog.csdn.net/misayaaaaa/article/details/79115166