2015-07-10 250 views

回答

1

我建议使用这个命令和工具,如sed或grep。

$ readelf --string-dump=.debug_str YOUR_PROGRAM 

这个节目的路径和源文件名:

$ readelf --string-dump=.debug_str YOUR_PROGRAM | sed -n '/\/\|\.c/{s/.*\] //p}' 
2
$ readelf --string-dump=.debug_str YOUR_PROGRAM 

工作正常。

但是,请确保your_program不是用命令

file YOUR_PROGRAM 
+0

这个答案出现在低质量的审查队列中,大概是因为你没有提供任何代码的解释。如果此代码回答此问题,请考虑添加一些文字,说明答案中的代码。这样,你就更有可能获得更多赞扬 - 并帮助提问者学习新东西。 – lmo

0

还有另一种方法去除:

readelf --syms YOUR-PROGGRAM |tee /tmp/log 

vim /tmp/log 
:vim "FILE" % 

你会得到所有的文件名,但没有路径。

0

readelf持有钥匙,但你不希望倾倒字符串威利。使用-wi选项来正确格式化信息。
例如,从而创造一个外壳脚本:

readelf -wi $1 | grep -B1 DW_AT_comp_dir | \ 
    awk '/DW_AT_name/{name = $NF; getline; print $NF"/"name}' 

其进一步总结了readelf -wi输出。