我想获得源代码路径&&源名称只是通过ELF文件, .debug_str 部分包含我需要的内容,但是如何将其过滤掉?
答案 0 :(得分:2)
我建议使用此命令和工具,如sed或grep。
$ readelf --string-dump=.debug_str YOUR_PROGRAM
此节目路径和源文件名:
$ readelf --string-dump=.debug_str YOUR_PROGRAM | sed -n '/\/\|\.c/{s/.*\] //p}'
答案 1 :(得分:2)
$ readelf --string-dump=.debug_str YOUR_PROGRAM
工作正常。
但是,请确保使用命令
不会剥离your_programfile YOUR_PROGRAM
答案 2 :(得分:1)
还有另一种方式:
readelf --syms YOUR-PROGGRAM |tee /tmp/log
vim /tmp/log
:vim "FILE" %
您将获得所有文件名,但没有路径。
答案 3 :(得分:0)
readelf
持有密钥,但您不想无缘无故地转储字符串。使用-wi
选项正确格式化信息
例如,创建一个shell脚本:
readelf -wi $1 | grep -B1 DW_AT_comp_dir | \
awk '/DW_AT_name/{name = $NF; getline; print $NF"/"name}'
进一步总结了readelf -wi
的输出。