[英]Is there disadvantage in building with -g -O and strip vs. building only with -O
我有一个 Linux 可执行的 C 代码。
对于发布,我有两个选择:
一种是使用 -g -O3 构建,剥离调试 (strip -g) 并将 output 作为发行版发送。 其次是直接使用 -O3 构建版本。
如果我理解正确,第一个选项的优点是我可以在剥离之前使用 exe 进行远程调试或分析核心转储。
问题是这种方法是否有任何缺点,即是否存在使用 -g 构建然后剥离的运行时性能开销
谢谢。
使用-g
不会影响运行时性能。 调试信息位于可执行文件的单独部分中,如果您执行文件,甚至不会加载该部分。
但是您可以根据需要将调试信息和可执行文件分开(这仍然不会产生任何性能差异)。 我的 Gentoo Linux 以这种方式处理它,原因只是最小化使用的磁盘空间,这允许我将所有二进制文件放在一个小的快速磁盘上,同时仍然将几乎从未使用过的调试信息保存在单独的分区中。
objcopy --only-keep-debug foo foo.debug
strip -g foo
现在你有一个 foo 可执行文件和一个包含调试符号的 foo.debug。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.