2015-07-10 251 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輸出。