从可执行文件中删除除指定的调试信息以外

时间:2015-07-22 19:20:10

标签: linux gdb elf gas binutils

我正在为Linux开发一个共享库,它会生成一些我想在调试器中标记的线程。

我已经读过这个可以通过写入/ proc / [PID] / tasks / [TID] / comm来完成,但这不起作用(我的目标是一个较旧的libc) 。我还希望能够分配比通信限制更长的名称。

我的计划是自动加载Python脚本,将其放在.debug_gdb_scripts section中。

但是我想删除除脚本之外的调试信息以及它需要什么。 我尝试使用--keep-symbol选项,但仍然删除了所有调试部分(包括.debug_gdb_scripts)。

有没有办法保留这些?

1 个答案:

答案 0 :(得分:2)

首先想到的一个想法是首先删除你的程序,然后使用.debug_gdb_scripts添加objcopy

另一种方法可能是将.debug_gdb_scripts放入mini debug section。我认为这应该可行,虽然它有点奇怪 - 我认为第一种方法更健全。

另一个选择是执行标准操作并将所有debuginfo剥离到单独的debuginfo文件,然后在调试时使用。但是根据你的问题,我认为你有一些理由不想这样做。