我只能从ELF中剥离本地符号的调试信息吗?

时间:2015-08-19 05:00:19

标签: local elf strip debug-symbols

我们的构建系统会生成非常大的可执行文件。 许多大小的可执行文件都是调试信息。因此strip可能会显着降低可执行文件的大小。但如果剥离所有调试信息,调试将很难。

所以,我想知道,有没有办法只删除本地调试信息?例如局部变量,函数参数。我需要保持函数名和文件行之间的关系,以启用gdb backtrace和up / down命令工作。

非常感谢。

2 个答案:

答案 0 :(得分:2)

  

我需要保持函数名和文件行之间的关系,以启用gdb backtrace和up / down命令工作。

你错了:backtraceup/down工作正常没有任何调试信息。如果你需要backtrace all ,那么只需构建一个没有任何调试标志,你就可以了。

如果您确实需要文件信息, if ,您正在使用最近的gcc(或g++)进行编译并使用DWARF,那么您可以想:

      -gsplit-dwarf
       Separate as much dwarf debugging information as possible into a
       separate output file with the extension .dwo.  This option
       allows the build system to avoid linking files with debug
       information.  To be useful, this option requires a debugger
       capable of reading .dwo files.

注意:这仍然会在主二进制文件中留下文件/行信息,但会将所有其他内容保留在.dwo文件中。

答案 1 :(得分:-1)

尝试 strip --strip-debug

也可以尝试

   -g
   -S
   -d