gpt4 book ai didi

c - gcc -g vs not -g and strip vs not strip,性能和内存使用情况?

转载 作者:太空狗 更新时间:2023-10-29 16:20:58 27 4
gpt4 key购买 nike

如果二进制文件大小不是问题,使用 -g 而不是剥离要在性能关键环境中运行的二进制文件是否有任何缺点?我有很多磁盘空间,但二进制文件是 CPU 密集型的并且使用大量内存。二进制文件加载一次并存活数小时。

编辑:

我想使用带有调试信息的二进制文件的原因是为了在出现段错误时生成有用的核心转储。

最佳答案

ELF 加载器加载,而不是;从节到段的映射由用于构建可执行文件的链接描述文件决定。

默认链接器脚本不会将调试部分映射到任何段,因此省略。

符号信息有两种形式:静态符号在带外处理,从不存储为节数据;动态符号表由链接器生成并添加到与可执行文件一起加载的特殊段中,因为它需要动态链接器可以访问。 strip 命令仅删除静态符号,这些符号无论如何都不会在段中引用。

因此,您可以在整个过程中使用完整的调试信息,这不会影响 RAM 中可执行镜像的大小,因为它没有被加载。这也意味着该信息不包含在核心转储中,因此这也不会给您带来任何好处。

objcopy 实用程序有一个特殊选项,可以只复制调试信息,因此您可以生成包含此信息的第二个 ELF 文件并使用剥离的二进制文件;在分析核心转储时,您可以将这两个文件加载到调试器中:

objcopy --only-keep-debug myprogram myprogram.debug
strip myprogram

关于c - gcc -g vs not -g and strip vs not strip,性能和内存使用情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5936181/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com