【发布时间】:2015-09-28 18:20:27
【问题描述】:
我想通过 ELF 文件获取源代码路径 && 源名称,.debug_str 部分包含我需要的内容,但我该如何过滤掉它们呢?
【问题讨论】:
我想通过 ELF 文件获取源代码路径 && 源名称,.debug_str 部分包含我需要的内容,但我该如何过滤掉它们呢?
【问题讨论】:
$ readelf --string-dump=.debug_str YOUR_PROGRAM
工作正常。
但是,请确保 your_program 未被使用命令剥离
file YOUR_PROGRAM
【讨论】:
我建议使用此命令和 sed 或 grep 等工具。
$ readelf --string-dump=.debug_str YOUR_PROGRAM
这个显示路径和源文件名:
$ readelf --string-dump=.debug_str YOUR_PROGRAM | sed -n '/\/\|\.c/{s/.*\] //p}'
【讨论】:
还有一种方法:
readelf --syms YOUR-PROGGRAM |tee /tmp/log
vim /tmp/log
:vim "FILE" %
您将获得所有文件名,但没有路径。
【讨论】:
readelf 持有密钥,但您不想随意转储字符串。使用 -wi 选项正确格式化信息。
例如,这样创建一个 shell 脚本:
readelf -wi $1 | grep -B1 DW_AT_comp_dir | \
awk '/DW_AT_name/{name = $NF; getline; print $NF"/"name}'
进一步总结了readelf -wi的输出。
【讨论】: