**:
gdb常用命令
本機除錯
帶引數啟動
gdb --args ./program arg1 arg2 arg3
在main()處斷點
break main
啟動以後設定引數執行
run arg1 arg2 arg3
取消引數開始執行
set args
run
設定引數
set args arg1 arg2 arg3
run分析core檔案
gdb ./test ./test.core
gdb --core=./test.core ./test
gdb ./test 2640
gdb --pid=2640 ./test
遠端除錯
目標機器
gdbserver 127.0.0.1:1234 ./test
主機:target remote 127.0.0.1:1234
break main
run
除錯控制命令:
step 單步,引數n表示單步幾次,一般可以用作步入到 子函式 呼叫中去。(vc++的f11,windbg的t)
stepi 指令集的step,一般在彙編視窗呼叫。
next 類似單步,只不過把子函式呼叫當做乙個指令預先執行掉,不跟進去。(vc++的f10, windbg的p)
nexti 指令集的next,一般在彙編視窗呼叫。
until 執行到比當前行號大的一行為止。用作步出迴圈體,這個時候剛好在迴圈體的最後一行,可以執行這個步出迴圈。
finish 執行到當前棧即將返回的位置。用於將當前函式執行完畢返回。(vc++的shift+f11,windbg的pt,tt,wt)
advance 推進到某個位置 advance 27表示推進到27行,(vc++的ctrl+f11, windbg的pa, "step to address")
jump 跳到某個指令直接執行, jump 27 直接跳到27行開始執行,最好在27行之後某個位置斷點乙個看看。(windgb的r eip=0x41000100)
斷點指令:
break main 函式名斷點
break test.c : 27 檔案的27行斷點
break *0x00000000004005f0 在彙編指令的位址處斷點, 前面有乙個星號
硬體資料斷點
awatch 訪問斷點 access watch; awatch i, 當i被訪問的時候,程式斷開。(類似於windbg的ba斷點)
watch 寫入資料斷點, watch i 當i的值被修改的時候,斷開。
rwatch 讀取斷點, 當i的值被讀取的時候斷開。
hbreak 硬體指令斷點, hbreak *0x0000000000400606 在這個位址設定硬體斷點
條件斷點:
在迴圈體的11行斷點,只有迴圈計數器是50的時候斷開。
view plain
(gdb) break 11 if i=20
breakpoint 2 at 0x4005c9: file test.cxx, line 11.
(gdb) info breaks
undefined info command: "breaks". try "help info".
(gdb) info break
num type disp enb address what
1 breakpoint keep y 0x00000000004005c0 in foo() at test.cxx:9
breakpoint already hit 1 time
2 breakpoint keep y 0x00000000004005c9 in foo() at test.cxx:11
stop only if i=20
(gdb) c
continuing.
0 breakpoint 2, foo () at test.cxx:11
11 printf("%d\n",i);
(gdb) p i
$1 = 20
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 ...
gdb 常用命令
呼叫gdb編譯需要在cc後面加 g引數再加 o root redhat home gdb 除錯檔案 啟動gdb gdb l 字母l 從第一行開始列出原始碼 gdb break n 在第n行處設定斷點 gdb break func 在函式func 的入口處設定斷點 gdb info break 檢視斷...