之前就偶尔想过这个问题,但是对其似懂非懂,今天 了点自己的理解:
由于程序在编译的时候,是可以选择,是否包含调试信息的,
比如对于gcc来说,加上参数-g,就表示包含调试信息。
这样,才可以支持后续的调试,在程序里面会有对应的段的信息,
会包含众多的,调试器所需要的信息,才能支持在调式的时候,找到你的源码和目标代码之间的关系,
加上调试信息的好处,就是可以方便地调试,
由于调式信息的坏处:往往调式信息,比本身可执行文件的内容还大,
所以对于已经彻底开发完成的程序,之后不需要调试开发了,就应该去掉可执行文件里面的调式信息了。
以减小可执行文件的大小,去除不需要的调试信息。
linux下,有个对应的工具,就是大家常见的strip,对程序进行“剥皮”,去掉可执行文件所不需要的信息。
因此,对于release和debug的版本的程序,最大的区别也就是:
release版本的,不包含调式信息;
debug版本的,包含调试信息,一般文件大小要更大些。
转载请注明:在路上 » [学习记录]程序版本:release和debug的区别