DEBUG:工具简介
以下是二进制文件分析相关命令的简要表格介绍:
命令 | 主要功能 | 常用选项示例 |
---|---|---|
file | 检测文件类型(ELF、脚本、数据等) | file /bin/ls |
readelf | 解析ELF文件结构(头、节、符号表等) | readelf -h /bin/ls |
objdump | 反汇编、查看节信息、显示符号表等 | objdump -d /bin/ls |
nm | 列出目标文件或可执行文件的符号表 | nm /bin/ls |
ldd | 查看动态链接库依赖关系 | ldd /bin/ls |
strings | 提取文件中的可打印字符串 | strings /bin/ls |
size | 显示目标文件各段(text/data/bss)的大小 | size /bin/ls |
strip | 删除符号表、调试信息,减小文件大小 | strip /bin/ls |
elfedit | 修改ELF文件头或节信息 | elfedit --output-type /bin/ls |
addr2line | 将地址转换为源代码文件名和行号(需调试信息) | addr2line -e /bin/ls 0x1234 |
gdb | GNU调试器,用于动态调试程序 | gdb /bin/ls |
readobj | LLVM工具,类似readelf ,支持多种对象格式 | readobj -sections /bin/ls |
eu-readelf | elfutils增强版readelf ,提供更多信息 | eu-readelf -a /bin/ls |
eu-objdump | elfutils增强版objdump | eu-objdump -d /bin/ls |
eu-nm | elfutils增强版nm | eu-nm /bin/ls |
eu-size | elfutils增强版size | eu-size /bin/ls |
eu-strip | elfutils增强版strip | eu-strip /bin/ls |
说明:
- ELF分析三剑客:
readelf
、objdump
、nm
是最常用的静态分析工具。 - 动态分析:
ldd
(依赖库)、gdb
(调试)用于运行时分析。 - 增强工具:
eu-*
(来自elfutils
)提供更详细的输出,适合高级分析。 - 其他工具:
file
(快速识别文件类型)、strings
(提取字符串)常用于初步检查。
在obmc中获取交叉编译工具链的方法:
首先执行
bitbake -c populate_sdk obmc-phosphor-image
然后在项目的deploy/sdk目录下会生成相关的sdk文件
文件名类似:
openbmc-phosphor-<架构>-toolchain-<版本>.sh
执行该文件
./openbmc-phosphor-<架构>-toolchain-<版本>.sh -d ~/openbmc-sdk
此时可以在对应的文件夹获取全部的工具