1. 程式人生 > >gdb除錯及gdbserver遠端除錯

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服務,進入要除錯程式所在目錄,輸入下面命令:

     gdbserver啟動

     表示在目標系統2000埠開啟一個除錯程序,example為要除錯的程式

     然後在宿主機上啟動gdb程式,同樣進入要除錯檔案所在目錄,啟動偵錯程式,裝入除錯檔案,輸入下面命令

     宿主機gdb啟動

    連線目標板連線,輸入命令:

    連線目標板

    連線成功後,目標板顯示

    remote debugging using:2000

    這樣連線就成功了,各種命令就可以用了,還有個注意,gdbserver預設程式就運行了,所以不需要在用run命令了。