gdb基本使用方法及常用命令
GNU調(diào)試器(GNU Debugger, GDB)是一個(gè)開(kāi)源的源代碼級(jí)的調(diào)試工具,其性能優(yōu)良、功能齊全、易于使用,在嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程中扮演著越來(lái)越重要的角色。接下來(lái)是小編為大家收集的gdb基本使用方法及常用命令,希望能幫到大家。
gdb基本使用方法及常用命令
一、編譯、鏈接成可執(zhí)行文件
記得加入-g選項(xiàng)
gcc -g gdbtest.c -o test
二、啟動(dòng)gdb
gdb filename ---- 本例中是gdb test,如下圖:

或者
gdb
(gdb)file filename,如下圖:

三、退出
(gdb)quit
四、基本操作
(1)列出源代碼list,在提示符下打入list,會(huì)出現(xiàn)一部分源代碼,接著按回車會(huì)重復(fù)上一次命令

可以利用help list查詢list的使用方法

a.list 10 -- 以第10行為中心顯示

b.顯示compute函數(shù) list compute

c.列出10-15行的源代碼 list 10,15

d.列出其他文件的相應(yīng)行或函數(shù)
list gdbinc.h:1
list gdbinc.h:max
(2)運(yùn)行程序run

如果需要參數(shù)可以在run后面跟上參數(shù)

(3)設(shè)置斷點(diǎn)break
a.在某行設(shè)置斷點(diǎn) break 7

b.在某函數(shù)設(shè)置斷點(diǎn) break compute
c.在其他文件設(shè)置斷點(diǎn)(行或函數(shù)名) break gdbinc.h:2 break gdbinc.h:max
d.在某個(gè)地址設(shè)置斷點(diǎn) break *address (當(dāng)你調(diào)試的程序沒(méi)有源程序時(shí)使用)
e.查詢斷點(diǎn)信息info break

f.條件斷點(diǎn) break <linenum>or<func> if condition
如:break 8 if a == 10
g.開(kāi)啟和關(guān)閉斷點(diǎn)
disable 斷點(diǎn)號(hào) (關(guān)閉)
enable 斷點(diǎn)號(hào) (開(kāi)啟)
enable once 斷點(diǎn)號(hào) (開(kāi)啟一次)
enable delete 斷點(diǎn)號(hào)(開(kāi)啟一次后刪除)
h.刪除斷點(diǎn)
delete 斷點(diǎn)號(hào)
clear 清除當(dāng)前行的斷點(diǎn)
i.繼續(xù)執(zhí)行continue,當(dāng)執(zhí)行到某處中斷時(shí),使其繼續(xù)執(zhí)行

(4)單步執(zhí)行不進(jìn)入函數(shù)next
(5)單步執(zhí)行進(jìn)入函數(shù)step
(6)終止正在調(diào)試的程序kill


(8)監(jiān)視值被讀rwatch expression(基本同上)
(9)在運(yùn)行時(shí)打印變量的值print expression
print/F expression,其中F為格式(x--16進(jìn)制,d--有符號(hào)十進(jìn)制,u--無(wú)符號(hào)十進(jìn)制,f--浮點(diǎn)格式)
(10)修改變量值set variable=value
(11)執(zhí)行shell命令[shell 命令名]
(12)不退出gdb產(chǎn)生可執(zhí)行文件[make,必須有Makefile文件]
(13)info命令(此命令用處廣泛)
a.info break查看斷點(diǎn)信息(見(jiàn)上面斷點(diǎn))
b.info args查看當(dāng)前方法的參數(shù)

c.info stack查看調(diào)用堆棧

d.info source查看當(dāng)前源文件的信息

e.info sources查看所有在程序中的源文件路徑
(14)查看內(nèi)存命令 x/<n/f/u> <addr> n、f、u是可選的參數(shù)。<addr>表示一個(gè)內(nèi)存地址。
n 是一個(gè)正整數(shù),表示顯示內(nèi)存的長(zhǎng)度,也就是說(shuō)從當(dāng)前地址向后顯示幾個(gè)地址的內(nèi)容。
f 表示顯示的格式,參見(jiàn)上面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。
u 表示從當(dāng)前地址往后請(qǐng)求的字節(jié)數(shù),如果不指定的話,GDB默認(rèn)是4個(gè)bytes。u參數(shù)可以用下面的字符來(lái)代替,b表示單字節(jié),h表示雙字節(jié),w表示四字節(jié),g表示八字節(jié)。當(dāng)我們指定了字節(jié)長(zhǎng)度后,GDB會(huì)從指內(nèi)存定的內(nèi)存地址開(kāi)始,讀寫(xiě)指定字節(jié),并把其當(dāng)作一個(gè)值取出來(lái)。
輸出格式
一般來(lái)說(shuō),GDB會(huì)根據(jù)變量的類型輸出變量的值。但你也可以自定義GDB的輸出的格式。例如,你想輸出一個(gè)整數(shù)的十六進(jìn)制,或是二進(jìn)制來(lái)查看這個(gè)整型變量的中的位的情況。要做到這樣,你可以使用GDB的數(shù)據(jù)顯示格式:
x 按十六進(jìn)制格式顯示變量。
d 按十進(jìn)制格式顯示變量。
u 按十六進(jìn)制格式顯示無(wú)符號(hào)整型。
o 按八進(jìn)制格式顯示變量。
t 按二進(jìn)制格式顯示變量。
a 按十六進(jìn)制格式顯示變量。
c 按字符格式顯示變量。
f 按浮點(diǎn)數(shù)格式顯示變量。

比如:上圖中 x/4dw 0xbffff650 指的是顯示4個(gè)單元的內(nèi)容,以10進(jìn)制顯示,每個(gè)單元長(zhǎng)度為4個(gè)字節(jié)
看了“gdb基本使用方法及常用命令”還想看:
1.2014年9月計(jì)算機(jī)二級(jí)Access無(wú)紙化預(yù)測(cè)選擇題