2013-08-07 64 views
2

如何查找調試信息是否包含相對路徑或絕對路徑?如何查找調試信息是否只包含相對路徑或絕對路徑?

我想輸出帶註釋的源(opannotate)使用以下鏈接。 http://oprofile.sourceforge.net/doc/opannotate.html

我想知道它爲了給以下選項與opannotate一起。

--base-dirs/-b [paths]/ 用逗號分隔的路徑前綴列表。當調試信息指定系統上不存在的源的絕對路徑時,可以使用此方法將OProfile指向源文件的其他位置。前綴從調試源文件路徑中剝離,然後在由searchsearchdirs指定的搜索目錄中搜索。

--search-dirs/-d [paths] 逗號分隔的搜索源文件的路徑列表。當調試信息只包含相對路徑時,這對查找源文件很有用。

謝謝。

回答

3

如果編譯期間C_FLAGS包含-g參數,則單個源文件的所有路徑都包含在生成的二進制可執行文件的.debug_info部分中。

以下命令將轉儲到控制檯,包含使用debug-info構建的二進制文件中存在的各種源代碼文件的所有路徑的完整列表。

$ readelf --debug-dump=info <binary-executable> | grep "\.c" | awk '{print $8}' 

要搜索的二進制文件的調試信息中的一個特定的源文件的路徑,一個可以修改grep "\.c"grep "<filename>"適當。

欲瞭解更多詳情,請登錄關於debug-info in binaries的優秀文章。

+0

非常感謝TheCodeArtist。用正確的答案再次保存了我的一天。我無法提出你的答案。再次感謝。 –

+0

在SO上,您將需要[最少15分來滿足答案](http://meta.stackexchange.com/questions/41347/why-are-15-reputation-points-required-to-upvote)。你可以開始回答問題併爲自己創造點數。 ;-) ;-) – TheCodeArtist

+0

你是我的大師.. –