gdb基本使用方法及常用命令
GNU調(diào)試器(GNU Debugger, GDB)是一個開源的源代碼級的調(diào)試工具,其性能優(yōu)良、功能齊全、易于使用,在嵌入式系統(tǒng)開發(fā)過程中扮演著越來越重要的角色。接下來是小編為大家收集的gdb基本使用方法及常用命令,希望能幫到大家。
gdb基本使用方法及常用命令
一、編譯、鏈接成可執(zhí)行文件
記得加入-g選項
gcc -g gdbtest.c -o test
二、啟動gdb
gdb filename ---- 本例中是gdb test,如下圖:
或者
gdb
(gdb)file filename,如下圖:
三、退出
(gdb)quit
四、基本操作
(1)列出源代碼list,在提示符下打入list,會出現(xiàn)一部分源代碼,接著按回車會重復上一次命令
可以利用help list查詢list的使用方法
a.list 10 -- 以第10行為中心顯示
b.顯示compute函數(shù) list compute
c.列出10-15行的源代碼 list 10,15
d.列出其他文件的相應行或函數(shù)
list gdbinc.h:1
list gdbinc.h:max
(2)運行程序run
如果需要參數(shù)可以在run后面跟上參數(shù)
(3)設置斷點break
a.在某行設置斷點 break 7
b.在某函數(shù)設置斷點 break compute
c.在其他文件設置斷點(行或函數(shù)名) break gdbinc.h:2 break gdbinc.h:max
d.在某個地址設置斷點 break *address (當你調(diào)試的程序沒有源程序時使用)
e.查詢斷點信息info break
f.條件斷點 break <linenum>or<func> if condition
如:break 8 if a == 10
g.開啟和關(guān)閉斷點
disable 斷點號 (關(guān)閉)
enable 斷點號 (開啟)
enable once 斷點號 (開啟一次)
enable delete 斷點號(開啟一次后刪除)
h.刪除斷點
delete 斷點號
clear 清除當前行的斷點
i.繼續(xù)執(zhí)行continue,當執(zhí)行到某處中斷時,使其繼續(xù)執(zhí)行
(4)單步執(zhí)行不進入函數(shù)next
(5)單步執(zhí)行進入函數(shù)step
(6)終止正在調(diào)試的程序kill
(8)監(jiān)視值被讀rwatch expression(基本同上)
(9)在運行時打印變量的值print expression
print/F expression,其中F為格式(x--16進制,d--有符號十進制,u--無符號十進制,f--浮點格式)
(10)修改變量值set variable=value
(11)執(zhí)行shell命令[shell 命令名]
(12)不退出gdb產(chǎn)生可執(zhí)行文件[make,必須有Makefile文件]
(13)info命令(此命令用處廣泛)
a.info break查看斷點信息(見上面斷點)
b.info args查看當前方法的參數(shù)
c.info stack查看調(diào)用堆棧
d.info source查看當前源文件的信息
e.info sources查看所有在程序中的源文件路徑
(14)查看內(nèi)存命令 x/<n/f/u> <addr> n、f、u是可選的參數(shù)。<addr>表示一個內(nèi)存地址。
n 是一個正整數(shù),表示顯示內(nèi)存的長度,也就是說從當前地址向后顯示幾個地址的內(nèi)容。
f 表示顯示的格式,參見上面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。
u 表示從當前地址往后請求的字節(jié)數(shù),如果不指定的話,GDB默認是4個bytes。u參數(shù)可以用下面的字符來代替,b表示單字節(jié),h表示雙字節(jié),w表示四字節(jié),g表示八字節(jié)。當我們指定了字節(jié)長度后,GDB會從指內(nèi)存定的內(nèi)存地址開始,讀寫指定字節(jié),并把其當作一個值取出來。
輸出格式
一般來說,GDB會根據(jù)變量的類型輸出變量的值。但你也可以自定義GDB的輸出的格式。例如,你想輸出一個整數(shù)的十六進制,或是二進制來查看這個整型變量的中的位的情況。要做到這樣,你可以使用GDB的數(shù)據(jù)顯示格式:
x 按十六進制格式顯示變量。
d 按十進制格式顯示變量。
u 按十六進制格式顯示無符號整型。
o 按八進制格式顯示變量。
t 按二進制格式顯示變量。
a 按十六進制格式顯示變量。
c 按字符格式顯示變量。
f 按浮點數(shù)格式顯示變量。
比如:上圖中 x/4dw 0xbffff650 指的是顯示4個單元的內(nèi)容,以10進制顯示,每個單元長度為4個字節(jié)
看了“gdb基本使用方法及常用命令”還想看:
3.嵌入式培訓心得