gdb基本使用方法和常用命令

2021-10-06 03:26:38 字數 2025 閱讀 1658

一:符號表說明

使用gdb除錯的前提是要有符號表。如果程式是release版本,符號表不全,則使用gdb除錯時,不能單步除錯,成員變數等資訊不可查

如何生成符號表

編譯**時加上-g引數,則編譯的程式中會帶有當前程式的符號表。

如 gcc -o main main.c,則可對main程式進行單步除錯

二:除錯

假設有一程序test

gdb test //除錯某一可執行程式

1.設定斷點

設定斷點的命令為b

1)b function 將函式function設定為斷點

2)b test.c:100 將檔案的第100行設定為斷點

3)b test.c:100 if tt = 1 將檔案test.c的第100行作為斷點,當tt等於1時停止

2,檢視當前斷點資訊 info b

3,刪除當前斷點資訊 delete 1 delete加斷點的num 或者用d 1

4,使當前斷點失效 disable 1 如果斷點已失效 用enable 1時斷點1繼續生效

5,清除所有斷點 clear

四:列印變數的值

1,print i 簡寫為p列印變數i的值

2,p/x i 以十六進製制列印變數i的值 八進位制(o),二進位制(t)

五:除錯基本命令

1,bt 檢視當前棧空間資訊

2,next 簡寫為n 進行單步除錯

3,step 簡寫為s 遇到函式時進入函式

4,finish 結束當前函式

5,continue 簡寫為c,遇到斷點繼續執行用c ;c 3,忽略斷點,直到第三次碰到斷點

6,untill 簡寫為u,迴圈體直接退出

7,set i = 1 當前斷點處設定變數i的值為1

8,info locals 顯示當前所有區域性變數

六:稍微高階點的用法

1,command

在斷點處做處理,如下圖,當i=5時,attach.c的第16行停住,執行的命令時列印i的值

command後面加數字代表的是對某個斷點做command

2, frame 2 跳到2號棧框

3,@ 陣列列印用@,假設需要列印10個字元,變數為tt,則p@10

4,call 執行某個函式時用

6,set follow-fork-mode child/parent 當fork子程序需要跟子程序時用,或跟進父程序使用

7,gdb attach xx 跟進正在執行pid為***的程式

8,jump gdb可以改變程式的執行順序

jump test.c:10 直接跳轉到test.c的第10行執行,跳過中間**

jump +10 直接跳轉到當前斷點後的第10行,跳過中間**

9,return 強制返回,剩餘**不再還行

10, up 上移棧針,使上乙個函式成為當前函式

七:多執行緒除錯

info thread 檢視所有執行緒資訊

thread x 將程式跳到執行緒x的棧框

break thread_test.c:123 thread all 在所有執行緒中相應的行上設定斷點

set scheduler-locking off|on 鎖定當前執行緒,只除錯當前執行緒

八:其他

list function 顯示某個函式的原始碼

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

list - 顯示當前行前面的源程式

show listsize 檢視當前listsize的設定。

set listsize count 設定一次顯示源**的行數

git使用方法和常用命令

本文適合對git已經稍有了解的人,我也是接觸這個東西沒幾天,不明覺厲啊,各種強大,我也說不出什麼道道來,但是基本上使用沒什麼問題。下面就把git的一些基本使用流程和常用命令寫下來,供大家速查。git使用流程及常用命令 1 進入shell,建立乙個資料夾作為本地git庫的根目錄 2 建立本地git版本...

gdb常用命令

gnu的偵錯程式稱為gdb,是乙個互動式的程式,工作在字元模式。其常用命令如下 break num 在指定的行上設定斷點 break 1 bt 顯示函式的呼叫順序 clear 刪除斷點 clear test.c 10 display expr 每次程式停止後顯示表示式的值 printf expr顯示...

GDB常用命令

1 執行 run2 單步執行 step next finish 一直執行到函式返回 until 執行到某一行 3 斷點 break args break 12 break 10 hbreak args 硬體輔助斷點 thbreak args rbreak args info breakpoints ...