gdb常用命令

2021-06-08 22:22:19 字數 3040 閱讀 9506

1.在gdb中執行程式

gdb

gdb pid

attach pid

#附加到程序上進行除錯

detach pid

#取消附加

quit(q)

#退出gdb

run(r)

#執行程式

2.檢視執行資訊

show args

#檢視設定好的執行引數

set args

#設定執行時引數

pwd#顯示當前目錄

show paths

#檢視程式執行路徑

3.除錯

next(n)

#單步除錯(不進入)

step(s)

#單步除錯(進入)

print(p)

#列印變數

backtrace(bt)

#檢視函式堆疊

finish

#退出函式

continue(c)

#繼續4.中斷程式執行方式

在gdb中,可以使用以下幾種方式來暫停程式的執行

斷點(breakpoint)、觀察點(watchpoint)、捕捉點(catchpoint)、訊號(signals)和執行緒停止(thread stops)

如果恢復程式的執行可以使用continue(c)

5.斷點

break(b) 檔名::行號/函式名 類::函式名

#加斷點

info break(i b)

#檢視斷點資訊

clear 行號/函式名

#清除斷點

clear

#清除所有斷點

disable 斷點序號

#disable斷點

enable 斷點序號

#enable斷點

delete breakpoint 斷點序號

delete breakpoint

#刪除所有斷點

6.訊號

訊號:訊號是軟體時將上對中斷機制的一種模擬,在原理上,乙個程序收到乙個訊號與處理器收到乙個中斷請求可以說是一樣的,訊號是非同步的。

unix常用訊號

sigint:中斷字元訊號,也就是ctrl+c的訊號

sigbus:硬體故障的訊號

sigchld:子程序狀態改變訊號

sigkill:終止程式執行訊號

handle #定義乙個訊號處理

:nostop stop print noprint ...

info signals

info handle

signal #產生乙個訊號量給被除錯的程式

7.執行緒

break thread

info threads

#檢視正在執行程式的執行緒資訊

8.檢視相關資訊

info args

#列印當前函式引數名及值

info locals

#列印當前函式中所有區域性變數及值

info catch

#列印當前函式中的異常處理資訊

backtrace(bt)

#列印當前的函式呼叫棧的所有資訊

backtrace(bt) #檢視n層棧的資訊

print(p)/《進製標識》 #顯示表示式的值

print x=4

#設定變數值

進製標識

x:16進製制

d:10進製

o:8進製

t:2進製

c:字元格式

examine(x) #檢視記憶體

display #設定自動顯示

undisplay #刪除自動顯示

delete display #刪除自動顯示

disable display #disable自動顯示

enable display #enablee自動顯示

info display

show language

#檢視當前語言環境

info source

whatis

#識別陣列或變數的型別

ptype

#比whatis的功能更強,他可以提供乙個結構的定義

9.顯示源程式

list #顯示第linenum行的周圍的源程式

list #顯示函式名為function的函式的源程式

list

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

list -

#顯示當前行前面的源程式

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

show listsize

#顯示一次顯示源**的行數

list ,#顯示first到last之前的源**

forward-search #向前搜尋

search #向後搜尋

file #切換可執行檔案(未確認)

list :#切換原始檔(未確認)

10.指定原始檔的路徑

directory(dir) #加乙個原始檔路徑到當前路徑的前面

directory

#清除所有的自定義的原始檔搜尋路徑資訊

show directories

#顯示定義了的原始檔搜尋路徑

11.源**的記憶體

info :#顯示源**在記憶體中的位址

disassemble '檔名'::func

#顯示彙編**

12.環境變數

set $varname=val

#第一次建立時按照此方式進行,以後直接訪問即可

13.暫存器

info registers

#不包括浮點暫存器

info all-registers

#包括浮點暫存器

info registers

14.程式的跳轉

jump #跳轉執行

jump

return

#強制函式返回

return

call #強制呼叫函式

15.堆疊

backtrace(bt)

#檢視所有堆疊

frame(f)

#選中並檢視某層堆疊

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