gdb test // 使用gdb除錯test程式
run // 開始執行。
run arg1 arg2 arg3 ... // 開始執行,並傳入命令列引數。
run 可簡寫為 r。
list // 顯示10行**。
list line // 顯示第line行附近的10行**。
list n,m // 顯示第n行至第m行之間的**。
list ,n // 顯示第n行及其前面的10行**。
list fun // 顯示fun()函式附近的10行**。
list file:fun // 顯示file檔案中fun()函式附近的10行**。
list 可簡寫為 l。
break n // 在第n行設定斷點。
break fun // 在fun()函式處設定斷點。
break file:n // 在file檔案中第n行設定斷點。
break file:fun // 在file檔案中fun()函式處設定斷點。
break if condition // 當condition條件成立時,停止程式。
info break(i b) // 檢視斷點。
watch expr // 監視expr的值,expr可以是變數,也可以是表示式。若expr發生改變,停止程式。
delete n // 刪除編號為n的斷點。
break 可簡寫為 b。
delete 可簡寫為 d。
continue // 執行至下乙個斷點。
step // 單步跟蹤,進入函式。
next // 單步跟蹤,不進入函式。
finish // 執行程式,直到當前函式完成返回。
列印函式返回時的堆疊位址,返回值以及引數值(finish不可用於main())。
until // 執行程式,直到退出迴圈體。
continue 可簡寫為 c。
step 可簡寫為 s。
next 可簡寫為 n。
ptype x // 檢視變數x的型別
print expr // 檢視expr的值,expr可以是變數,也可以是表示式。
print expr=x // 修改expr的值,expr可以是變數,也可以是表示式。
print arrname // 檢視陣列中的所有元素的值
例如:int arr = ;
(gdb) print arr
$1 =
print arrname@len // 檢視len個陣列的值(越界訪問)
例如:int arr = ;
(gdb) print arr@2
$2 = , }
print *arrname // 檢視陣列首元素的值
例如:int arr = ;
(gdb) print *arr
$3 = 1
print *arrname@len // 檢視陣列前len個元素的值
例如:int arr = ;
(gdb) print *arr@2
$4 =
print &arrname // 檢視陣列的位址
例如:int arr = ;
(gdb) print &arr
$5 = (int (*)[5]) 0x7fffffffe4c0
print &arrname[i] // 檢視陣列元素arrname[i]的位址
例如:int arr = ;
(gdb) print &arr[0]
$6 = (int *) 0x7fffffffe4c0
(gdb) print &arr[2]
$7 = (int *) 0x7fffffffe4c8
print 可簡寫為 p。
quit // 退出gdb。
quit 可簡寫為 q。
enter鍵 // 重複執行上一條命令。
gdb除錯常用命令筆記
除錯執行中的程式 1.先查要除錯程序號 ps fu username 例如3843 或者用 ps aux grep 程序名 2.執行gdb,attach 3843 3.break 類名 行號 可以加斷點 delete 斷點序號 可以刪除斷點 加完斷點後,輸入c執行到斷點位置除錯 4.print 變數...
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 ...