debug 和 release 版本有什么不同
- Debug :调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供 强大的应用程序调试能力。
Debug模式下生成两个文件:除了**.exe或者.dll**文件外,还有一个.pdb文件,该文件记录了代码中断点等调试信息。
- Release:发布版本,不对源代码进行调试,编译时对应用程序的速度进行优化,使得程序在代码大小和运行速度上都是最优的(调试信息可以在单独的PDB文件中生成)。
Release模式下生成一个文件**.exe或.dll**文件。
总结: Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来。当然也可以提供其他的模式,例如自己定义一组编译选项,然后命名为MY_ABC等。习惯上,我们仍然更愿意使用VC已经定义好的名称。
Obj文件夹的作用
在obj目录中,有debug和release两个子目录。
obj目录是项目生成dll的源目录,然后将生成好的dll复制到bin目录下。obj用于存放编译过程中生成的中间临时文件。在.Net中,编译时分模块进行的,每个模块的编译结果都保存在obj目录下,最后会合并为一个.exe或者.dll文件,保存在bin目录下。
因为每次编译都是增量编译,也就是只重新编译改变了的模块,所以这个obj目录的作用就是保存这些小块的编译结果,并加快编译速度。
将不同版本的DLL混合而造成的不一致性形象地称为“动态链接库的地狱(DLL HELL)”。因此,当我们在使用DLL时需要注意:
- 不能将debug和release版的DLL混合在一起使用。debug是debug版,release是release版。
解决版本是将debug和release的程序分别放在主程序的debug和release目录下。
在实际生产环境中,尽量使用release版本的DLL。
Bin目录
Bin目录用来存放编译的结果,bin是二进制binrary的英文缩写,因为最初C编译的程序文件都是二进制文件,它有Debug和Release两个版本,分别对应文件夹bin/Debug和bin/Release。
obj
obj是object的缩写,用来存放编译过程中生成的中间临时文件。其中都有debug和release两个子目录,分别对应调试版本和发行版本,在.net中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。
总的来说:
- bin是放最终代码的目录 。
- obj就放中间代码的目录release和debug是不同的运行方式。
- debug会增加调试代码,方便调试。
- 调试完后,用release版本发布,没有调试代码,减小程序体积,加快执行速度。
转载至https://blog.youkuaiyun.com/lym940928/article/details/88607051