2014-04-09 70 views
1

我對編譯過程中生成的用於調試的文件產生了很大的困惑。gdb:用於調試的符號文件是什麼

我知道有兩種方法在編譯代碼時存儲調試信息。一種是將信息存儲在除了可執行文件(或目標文件)之外的單獨文件中,通常擴展名爲.sym)

1-我不知道其他方法是什麼。 (哪一個更常用)

2-什麼是符號文件? (一點點更詳細的比它使調試信息)

3-如果我們賦予其的makefile一個巨大的源代碼,我們如何找出哪些方法時,我們做「讓安裝」

我使用已經看到這個thread,但我更加困惑!

+1

另一種方法是在可執行文件中包含調試符號。 –

回答

2
  1. 另一種方法是在可執行文件中包含所有調試信息。
  2. 它保留諸如函數名稱之類的東西。當一個源文件被編譯時,它被轉換爲操作碼,並且所有的函數名都被轉換成指針。例如,當您使用gdb時,您可以僅使用break main來突破main函數。當你遇到段錯誤時,它也很有用,你只需輸入bt,它就可以使用全功能名稱進行回溯。
  3. 您可以打開Makefile並搜索安裝目標。調試信息級別通過gcc -g-gN標誌設置。
+0

感謝您的回覆。從(3)你的意思是如果用「-g」標誌完成編譯,那麼調試信息就會存儲在可執行文件本身中? – sali

+0

是的,這是通常的方法。 Google爲DWARF調試格式。或者執行readelf --debug-dump你的二進制文件(並檢查man readelf選擇性轉儲)。 – dbrank0

相關問題