gdb除錯及gdbserver遠端除錯
gdb偵錯程式是一款GNU開發組織併發布的UNIX/Linux下的程式除錯工具,具有強大的功能,足有與Visual Stido媲美,當然友好的介面是沒法相比的,呵呵。
開始編譯程式將除錯資訊包含進去,gdb偵錯程式執行在shell中輸入gdb就好,也可以輸入gdb filename,filename是待除錯程式名,下面就按斷點、單步等命令一個一個介紹。
1. 進入gdb gdb
退出gdb q(uit)
裝入除錯檔案 file filename
終止除錯程式 kill
2. 顯示原始碼 l(ist )
list n 顯示第n行上下5行的程式碼
3. 斷點break
b(reak) n 在第n行設定斷點
b 函式名 在函式名設定斷點
b [檔名:] 行號或函式名 在檔案中特定行或特定函式設定斷點
b [檔名:] 行號或函式名 <條件表示式> 滿足條件表示式才進入斷點
設定的斷點都會返回一個斷點編號,上面的類似還有tbreak臨時斷點,達到斷點後就指定備刪除。
delete [斷點號] 刪除指定斷點
clear 清除所有斷點
info 檢視斷點資訊
disable [斷點號] 停止斷點
enable [斷點號] 使能斷點
ingore [斷點號] <num> 忽略斷點num次
condtion[斷點號]<條件表示式> 修改斷點的條件
4. 單步
n(ext) 相當於step over
s(tep) 相當於step in
5. 執行程式 r(un) funpara
接著執行程式 c(ontinue)
6. 手動設定變數值 set variable i=4
遠端gdb除錯,嵌入式開發目標板資源有限,沒法在目標板上直接進行除錯,通常實用gdb+gdbserver的方式進行除錯,gdbserver執行在目標板上,gdb執行在宿主機上。
首先,目標板要包含gdbserver,在目標板上啟動gdbserver服務,進入要除錯程式所在目錄,輸入下面命令:
表示在目標系統2000埠開啟一個除錯程序,example為要除錯的程式
然後在宿主機上啟動gdb程式,同樣進入要除錯檔案所在目錄,啟動偵錯程式,裝入除錯檔案,輸入下面命令
連線目標板連線,輸入命令:
連線成功後,目標板顯示
remote debugging using:2000
這樣連線就成功了,各種命令就可以用了,還有個注意,gdbserver預設程式就運行了,所以不需要在用run命令了。