debugging - 如何将调试符号添加到剥离的 ELF 二进制文件

标签 debugging gdb debian elf debug-symbols

我需要使用调试符号反汇编 debian 二进制文件,为此我使用 IDA Pro。问题是:如果调试符号存储在单独的文件中(对于 debian 软件包),IDA 似乎无法识别它们。然而,当编译二进制文件并在其中保留调试符号时,IDA 可以毫无问题地注释所有函数和变量。

所以我的问题是:有没有办法将调试符号添加回剥离的二进制文件中?目标是创建带有调试符号的单个二进制文件。例如,可以使用 gdb 来 1) 调试剥离的二进制文件; 2)加载调试符号; 3) 生成包含这些符号的二进制文件。

我发现的一种方法here建议将调试部分复制回二进制文件中。不幸的是,这仅部分起作用,并且一些符号仍然丢失。我已经使用 gdb 验证了这一点。

最佳答案

对于 gdb 使用设置调试文件目录

对于 IDA Pro:

  1. 在 IDA Pro 中打开调试符号文件
  2. 将数据库/类型信息导出为 IDC 脚本
  3. 编辑 IDC 脚本
    1. 手动合并数据库/typeinfo IDC 脚本
    2. 注释掉DeleteAll()
  4. 在 IDA Pro 中打开剥离的 ELF 文件
  5. 分析完成后,执行IDC脚本

关于debugging - 如何将调试符号添加到剥离的 ELF 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34293646/

相关文章:

c++ - 如何在 gdb 中配置 STL View ?

gdb - 如何从.gdbinit强制断点?

连接到 AWS S3 时 Node.js 崩溃

c# - 如何在设计时进行调试?

ios - 监听iOS API调用?

javascript - 如何在执行某行后仅在断点处停止?

ubuntu - 在 docker 镜像中生成所有语言环境

java - 主线程被挂起并且运行时异常

c - 访问 main 之后定义的函数

linux - 在Raspberry Pi/Ubuntu/Debian中使用shell程序动态切换WiFi