我们的构建系统会生成非常大的可执行文件。 许多大小的可执行文件都是调试信息。因此strip可能会显着降低可执行文件的大小。但如果剥离所有调试信息,调试将很难。
所以,我想知道,有没有办法只删除本地调试信息?例如局部变量,函数参数。我需要保持函数名和文件行之间的关系,以启用gdb backtrace和up / down命令工作。
非常感谢。
答案 0 :(得分:2)
我需要保持函数名和文件行之间的关系,以启用gdb backtrace和up / down命令工作。
你错了:backtrace
和up/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