elf 文件中的“.debug_info”部分是什么?
What is section ".debug_info" in an elf file?
我有一个 elf 文件,在使用 elfparser 分析 mapfile 和 elf 时,我看到一个名为 .Debug_info 的部分占用了最大的内存。
我正在为 xtensa DSP 编译,使用 xt-xc++,我还没有使用 -g 选项,也给出了 -o2 优化级别。
是否可以为发布版本删除它?
section called .debug_info
, which is taking largest memory.
请注意,此部分没有 SHF_ALLOC
标志,因此 不会 在运行时占用任何 RAM(在文件系统中只占用 space ).当然,如果您使用 ramdisk,那么该部分最终仍然会占用您的 RAM。
is it possible to remove this for release builds?
是:.debug*
部分中的 none 部分在运行时是必需的,并且可以安全地剥离所有部分。
-g0
and -s
option didn't work.
很可能您正在从链接的库中获取 .debug_*
部分,而不是从您自己的代码中获取。 -g
在编译库时存在,因此使用 -g0
构建没有任何效果。
令人惊讶的是 -s
没有起作用,但也许您的编译器对此标志的解释不同。
无论如何,您应该使用 strip --strip-debug
删除 .debug_*
部分(注意:这 而不是 删除符号 table).
最佳实践实际上是使用完整的调试信息 (-g
) 编译所有代码,保存完整的调试二进制文件以供 post-mortem 分析,使用 strip --strip-debug
进行发布二进制文件,并将该二进制文件用于实际分发。
If/when 发布二进制文件崩溃并留下核心转储,(保存)完全调试完全匹配的二进制文件大大改进了 post-您可以进行的验尸分析。
我有一个 elf 文件,在使用 elfparser 分析 mapfile 和 elf 时,我看到一个名为 .Debug_info 的部分占用了最大的内存。
我正在为 xtensa DSP 编译,使用 xt-xc++,我还没有使用 -g 选项,也给出了 -o2 优化级别。
是否可以为发布版本删除它?
section called
.debug_info
, which is taking largest memory.
请注意,此部分没有 SHF_ALLOC
标志,因此 不会 在运行时占用任何 RAM(在文件系统中只占用 space ).当然,如果您使用 ramdisk,那么该部分最终仍然会占用您的 RAM。
is it possible to remove this for release builds?
是:.debug*
部分中的 none 部分在运行时是必需的,并且可以安全地剥离所有部分。
-g0
and-s
option didn't work.
很可能您正在从链接的库中获取 .debug_*
部分,而不是从您自己的代码中获取。 -g
在编译库时存在,因此使用 -g0
构建没有任何效果。
令人惊讶的是 -s
没有起作用,但也许您的编译器对此标志的解释不同。
无论如何,您应该使用 strip --strip-debug
删除 .debug_*
部分(注意:这 而不是 删除符号 table).
最佳实践实际上是使用完整的调试信息 (-g
) 编译所有代码,保存完整的调试二进制文件以供 post-mortem 分析,使用 strip --strip-debug
进行发布二进制文件,并将该二进制文件用于实际分发。
If/when 发布二进制文件崩溃并留下核心转储,(保存)完全调试完全匹配的二进制文件大大改进了 post-您可以进行的验尸分析。