我有一个Linux的C代码可执行文件.
要发布,我可以有两个选择:
一个是使用-g -O3构建,剥离调试(strip -g)并将输出作为发布发送.第二是使用-O3直接构建版本.
如果我理解正确的话,第一个选项的优点是我可以在剥离之前使用exe来进行远程调试或分析核心转储.
问题是这种方法是否存在任何缺点,即是否存在使用-g构建然后剥离的运行时性能开销
谢谢.
使用时没有运行时性能损失-g.调试信息位于可执行文件的单独部分中,如果执行该文件,则甚至无法加载.
但是如果您愿意,可以将调试信息和可执行文件分开(这仍然不会产生任何性能差异).我的Gentoo Linux以这种方式处理它,原因是简单地减少了使用的磁盘空间,这允许我将所有二进制文件放在一个小的快速磁盘上,同时仍然在一个单独的分区中保留调试信息(这是最常见的从未使用过的).
objcopy --only-keep-debug foo foo.debug
strip -g foo
Run Code Online (Sandbox Code Playgroud)
现在你有一个foo可执行文件和一个包含调试符号的foo.debug.
| 归档时间: |
|
| 查看次数: |
665 次 |
| 最近记录: |