GDB - 除錯符號



除錯符號表將已編譯二進位制程式中的指令對映到它們的變數、函式或原始碼中的行。此對映可以類似於

  • 程式指令 ⇒ 專案名稱、專案型別、原始檔案、定義的行號。

符號表可以嵌入到程式中或作為單獨的檔案儲存。因此,如果你計劃除錯你的程式,那麼需要建立一個符號表,其中包含除錯程式所需的資訊。

我們可以推斷出有關符號表的以下事實

  • 符號表適用於特定版本的程式 - 如果程式發生變化,則必須建立一個新表。

  • 與零售(非除錯)版本相比,除錯版本通常更大並且執行得更慢;除錯版本包含符號表和其他輔助資訊。

  • 如果你希望除錯並非自己編譯的二進位制程式,則必須從作者那裡獲取符號表。

為了讓 GDB 能夠逐行讀取符號表中的所有資訊,我們需要以稍有不同的方式進行編譯。通常我們會以如下方式編譯我們的程式

gcc hello.cc -o hello 

要完成此操作,我們需要使用 -g 標誌進行編譯,如下所示

gcc -g hello.cc -o hello 
廣告