gdb常用命令abc

2021-06-03 03:14:23 字數 2244 閱讀 3329

**:

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 檢視斷...