繁体   English   中英

使用 -g -O 构建和剥离与仅使用 -O 构建相比是否存在劣势

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM