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