西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴(lài)的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)編程開(kāi)發(fā)VC|VC++ → GDB常用命令大全 GDB 命令詳細(xì)解釋

GDB常用命令大全 GDB 命令詳細(xì)解釋

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2014/9/8 21:25:08字體大。A-A+

作者:西西點(diǎn)擊:11次評(píng)論:0次標(biāo)簽: GDB

  • 類(lèi)型:游戲其他大。2.5M語(yǔ)言:英文 評(píng)分:5.0
  • 標(biāo)簽:
立即下載

GDB是一個(gè)強(qiáng)大的命令行調(diào)試工具。大家知道命令行的強(qiáng)大就是在于,其可以形成執(zhí)行序列,形成腳本。如果你是在UNIX平臺(tái)下做軟件,你會(huì)發(fā)現(xiàn)GDB這個(gè)調(diào)試工具有比VC、BCB的圖形化調(diào)試器更強(qiáng)大的功能。所謂“寸有所長(zhǎng),尺有所短”就是這個(gè)道理。 

gdb(GNU Debuger),它可以用來(lái)調(diào)試C和C++程序,功能不亞于Windows下的許多圖形界面的調(diào)試工具。

GDB主要幫忙你完成下面四個(gè)方面的功能: 
1、啟動(dòng)你的程序,可以按照你的自定義的要求隨心所欲的運(yùn)行程序。 
2、可讓被調(diào)試的程序在你所指定的調(diào)置的斷點(diǎn)處停住。(斷點(diǎn)可以是條件表達(dá)式) 
3、當(dāng)程序被停住時(shí),可以檢查此時(shí)你的程序中所發(fā)生的事。 
4、動(dòng)態(tài)的改變你程序的執(zhí)行環(huán)境。 

gdb基本命令

在程序編譯時(shí)增加-g選項(xiàng)以支持gdb調(diào)試

如:

$ gcc -g example.c -o example.x

通過(guò)上述命令對(duì)example.c編譯之后,使用下列命令進(jìn)入到gdb調(diào)試:

$ gdb example.x

在gdb調(diào)試中,常用的命令有以下幾個(gè):

$ list 縮略為 l

列出程序源碼,每次列出10行,按回車(chē)重復(fù)運(yùn)行上一命令;

$ run 縮略為 r

程序開(kāi)始運(yùn)行,在r后可以加入程序啟動(dòng)參數(shù),程序運(yùn)行到斷點(diǎn)處暫停;

$ continue 縮略為 c

程序繼續(xù)運(yùn)行,到下一斷點(diǎn)處暫停;

單步調(diào)試

$ step 縮略為s

$ next 縮略為 n

程序繼續(xù)運(yùn)行到下一斷點(diǎn);

$ break 縮略為 b

在程序某一位置設(shè)置斷點(diǎn);

$ info break 縮略為 i b

查看斷點(diǎn)信息;

設(shè)置/查看運(yùn)行參數(shù)

$ set args ---/show args

加載運(yùn)行中的進(jìn)程進(jìn)行調(diào)試(Attach to the running process to be debugged.):

$ gdb attatch pid

Specifying source directories

$ dir dirname …

以十六進(jìn)制輸出內(nèi)存塊數(shù)據(jù)

$ x/28hx ---

段錯(cuò)誤調(diào)試,core文件樣例

通過(guò)ulimit命令查看一下系統(tǒng)是否配置支持了dump core的功能。通過(guò)ulimit -c或ulimit -a,可以查看core file大小的配置情況,如果為0,則表示系統(tǒng)關(guān)閉了dump core;可以通過(guò)ulimit -c unlimited來(lái)打開(kāi)。若發(fā)生了段錯(cuò)誤,但沒(méi)有core dump,是由于系統(tǒng)禁止core文件的生成。

$ gdb [exec file] [core file]

查看堆棧信息:

$ bt

PS:對(duì)于python程序在linux下可以使用pdb做調(diào)試!

Published by Windows Livewriter.

調(diào)試開(kāi)始時(shí),必須先載入要進(jìn)行調(diào)試的程序,可以用以下兩種方式:

 * 在啟動(dòng)gdb后執(zhí)行以下命令:

   file 可執(zhí)行文件路徑

 * 在gdb啟動(dòng)時(shí)就載入程序:

   gdb 可執(zhí)行文件路徑

載入程序后,接下來(lái)就是要進(jìn)行斷點(diǎn)的設(shè)置,要監(jiān)視的變量的添加等工作,下面對(duì)在這個(gè)過(guò)程中常會(huì)用到的命令逐一進(jìn)行介紹:

 * list :顯示程序中的代碼,常用使用格式有:

    list

      輸出從上次調(diào)用list命令開(kāi)始往后的10行程序代碼。

    list -

      輸出從上次調(diào)用list命令開(kāi)始往前的10行程序代碼。

    list n

      輸出第n行附近的10行程序代碼。

    list function

      輸出函數(shù)function前后的10行程序代碼。

 * forward/search :從當(dāng)前行向后查找匹配某個(gè)字符串的程序行。使用格式:

    forward/search 字符串

  查找到的行號(hào)將保存在$_變量中,可以用print $_命令來(lái)查看。

 * reverse-search :和forward/search相反,向前查找字符串。使用格式同上。

 * break :在程序中設(shè)置斷點(diǎn),當(dāng)程序運(yùn)行到指定行上時(shí),會(huì)暫停執(zhí)行。使用格式:

    break 要設(shè)置斷點(diǎn)的行號(hào)

 * tbreak :設(shè)置臨時(shí)斷點(diǎn),在設(shè)置之后只起作用一次。使用格式:

    tbreak 要設(shè)置臨時(shí)斷點(diǎn)的行號(hào)

 * clear :和break相反,clear用于清除斷點(diǎn)。使用格式:

    clear 要清除的斷點(diǎn)所在的行號(hào)

 * run :?jiǎn)?dòng)程序,在run后面帶上參數(shù)可以傳遞給正在調(diào)試的程序。

 * awatch :用來(lái)增加一個(gè)觀察點(diǎn)(add watch),使用格式:

    awatch 變量或表達(dá)式

  當(dāng)表達(dá)式的值發(fā)生改變或表達(dá)式的值被讀取時(shí),程序就會(huì)停止運(yùn)行。

 * watch :與awatch類(lèi)似用來(lái)設(shè)置觀察點(diǎn),但程序只有當(dāng)表達(dá)式的值發(fā)生改變時(shí)才會(huì)停止運(yùn)行。使用格 式:

    watch 變量或表達(dá)式

  需要注意的是,awatch和watch都必須在程序運(yùn)行的過(guò)程中設(shè)置觀察點(diǎn),即可運(yùn)行run之后才能設(shè)置。

 * commands :設(shè)置在遇到斷點(diǎn)后執(zhí)行特定的指令。使用格式有:

    commands

      設(shè)置遇到最后一個(gè)遇到的斷點(diǎn)時(shí)要執(zhí)行的命令

    commands n

      設(shè)置遇到斷點(diǎn)號(hào)n時(shí)要執(zhí)行的命令

  注意,commands后面跟的是斷點(diǎn)號(hào),而不是斷點(diǎn)所在的行號(hào)。

  在輸入命令后,就可以輸入遇到斷點(diǎn)后要執(zhí)行的命令,每行一條命令,在輸入最后一條命令后輸入end就可以結(jié)束輸入。

 * delete :清除斷點(diǎn)或自動(dòng)顯示的表達(dá)式。使用格式:

    delete 斷點(diǎn)號(hào)

 * disable :讓指定斷點(diǎn)失效。使用格式:

    disable 斷點(diǎn)號(hào)列表

  斷點(diǎn)號(hào)之間用空格間隔開(kāi)。

 * enable :和disable相反,恢復(fù)失效的斷點(diǎn)。使用格式:

    enable 斷點(diǎn)編號(hào)列表

 * ignore :忽略斷點(diǎn)。使用格式:

    ignore 斷點(diǎn)號(hào) 忽略次數(shù)

 * condition :設(shè)置斷點(diǎn)在一定條件下才能生效。使用格式:

    condition 斷點(diǎn)號(hào) 條件表達(dá)式

 * cont/continue :使程序在暫停在斷點(diǎn)之后繼續(xù)運(yùn)行。使用格式:

    cont

      跳過(guò)當(dāng)前斷點(diǎn)繼續(xù)運(yùn)行。

    cont n

      跳過(guò)n次斷點(diǎn),繼續(xù)運(yùn)行。

  當(dāng)n為1時(shí),cont 1即為cont。

 * jump :讓程序跳到指定行開(kāi)始調(diào)試。使用格式:

    jump 行號(hào)

 * next :繼續(xù)執(zhí)行語(yǔ)句,但是跳過(guò)子程序的調(diào)用。使用格式:

    next

      執(zhí)行一條語(yǔ)句

    next n

      執(zhí)行n條語(yǔ)句

 * nexti :?jiǎn)尾綀?zhí)行語(yǔ)句,但和next不同的是,它會(huì)跟蹤到子程序的內(nèi)部,但不打印出子程序內(nèi)部的語(yǔ)句。使用格式同上。

 * step :與next類(lèi)似,但是它會(huì)跟蹤到子程序的內(nèi)部,而且會(huì)顯示子程序內(nèi)部的執(zhí)行情況。使用格式同上。

 * stepi :與step類(lèi)似,但是比step更詳細(xì),是nexti和step的結(jié)合。使用格式同上。

 * whatis :顯示某個(gè)變量或表達(dá)式的數(shù)據(jù)類(lèi)型。使用格式:

    whatis 變量或表達(dá)式

 * ptype :和whatis類(lèi)似,用于顯示數(shù)據(jù)類(lèi)型,但是它還可以顯示typedef定義的類(lèi)型等。使用格式:

    ptype 變量或表達(dá)式

 * set :設(shè)置程序中變量的值。使用格式:

    set 變量=表達(dá)式

    set 變量:=表達(dá)式

 * display :增加要顯示值的表達(dá)式。使用格式:

    display 表達(dá)式

 * info display :顯示當(dāng)前所有的要顯示值的表達(dá)式。

 * delete display/undisplay :刪除要顯示值的表達(dá)式。使用格式:

    delete display/undisplay 表達(dá)式編號(hào)

 * disable display :暫時(shí)不顯示一個(gè)要表達(dá)式的值。使用格式:

    disable display 表達(dá)式編號(hào)

 * enable display :與disable display相反,使用表達(dá)式恢復(fù)顯示。使用格式:

    enable display 表達(dá)式編號(hào)

 * print :打印變量或表達(dá)式的值。使用格式:

    print 變量或表達(dá)式

  表達(dá)式中有兩個(gè)符號(hào)有特殊含義:$和$$。

  $表示給定序號(hào)的前一個(gè)序號(hào),$$表示給定序號(hào)的前兩個(gè)序號(hào)。

  如果$和$$后面不帶數(shù)字,則給定序號(hào)為當(dāng)前序號(hào)。

 * backtrace :打印指定個(gè)數(shù)的棧幀(stack frame)。使用格式:

    backtrace 棧幀個(gè)數(shù)

 * frame :打印棧幀。使用格式:

    frame 棧幀號(hào)

 * info frame :顯示當(dāng)前棧幀的詳細(xì)信息。

 * select-frame :選擇棧幀,選擇后可以用info frame來(lái)顯示棧幀信息。使用格式:

    select-frame 棧幀號(hào)

 * kill :結(jié)束當(dāng)前程序的調(diào)試。

 * quit :退出gdb。 

如要查看所有的gdb命令,可以在gdb下鍵入兩次Tab(制表符),運(yùn)行“help command”可以查看命令command的詳細(xì)使用格式。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱(chēng):
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)