GDB 除錯程式碼

LinuxDevqqqqqq發表於2018-11-22

一、Linux程式gcc編譯步驟:

Gcc編譯過程主要的4個階段:

l 預處理階段,完成宏定義和include檔案展開等工作;(.i)

l 根據編譯引數進行不同程度的最佳化,編譯成彙編程式碼(.s.S)

l 用匯編器把彙編程式碼進一步生成目的碼(.o)

l 用聯結器把生成的目的碼和系統或使用者提供的庫連線起來,生成可執行檔案

格式:

l gcc -E test.c//預處理階段

l Gcc -S test.c//編譯階段

l Gcc -c test.c//彙編階段

l Gcc -o test test.c//連結階段

二、Linux程式gdb除錯步驟:

Gdb的功能:

l 設定斷點

l 監視程式變數的值

l 程式的單步執行

l 顯示、修改變數的值

l 顯示、修改暫存器

l 檢視程式的堆疊情況

l 遠端除錯

Gdb除錯過程:

1、程式經過預處理後,即進入編譯階段,進入編譯階段,首先宣告編譯:

2、格式: gcc-o test test.c -g

3、進入編譯: gdb test

4、顯示需要編譯除錯的源程式:l(list)//list filename

5、設定斷點:b(break)行號

6、檢視設定的斷點:info b

7、執行除錯程式:run

8、跳到下一個斷點:c(continue)

9、單步執行的話使用:n(next)/s(step into)跳到函式體 //區別在與:next執行函式體,而step不執行函式體

10、除錯過程中檢視某個變數的變化:print i (每次都要手動設定)//display i(設定一次一直尾隨,直到用“undisplay 變數標號” 停止)

11、退出當前的除錯使用finish 跳出函式

12、清楚斷點 clear 行號

13、Delete 斷點資訊序號// 刪除所有斷點或設定的要刪除的斷點

14、退出除錯 q

15、b num if i==20 設定斷點的觸發條件

16、condition num i==50 改變斷點的觸發條件


17、GDB中原始碼檢視命令

list /l 行號或函式名 //檢視指定位置程式碼

list <linenum> //顯示程式第linenum行的周圍的源程式

list <function> //顯示函式名為function的函式的源程式

list // 顯示當前行後面的源程式

list <filename:funtion> //顯示哪個檔案中的哪個函式的源程式

eg: list src/fun1.c:fun1

list <filename:linenum> //哪個檔案的哪一行周圍的源程式

eg:list src/fun1.c:1


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561984/viewspace-2221185/,如需轉載,請註明出處,否則將追究法律責任。

相關文章