新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Linux下C編程基礎之:gdb調試器

        Linux下C編程基礎之:gdb調試器

        作者: 時間:2013-09-13 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/257150.htm

        3.4.2gdb基本命令

        gdb的命令可以通過查看help進行查找,由于gdb的命令很多,因此gdb的help將其分成了很多種類(class),用戶可以通過進一步查看相關class找到相應命令,如下所示:

        (gdb)help

        Listofclassesofcommands:

        aliases--Aliasesofothercommands

        breakpoints--Makingprogramstopatcertainpoints

        data--Examiningdata

        files--Specifyingandexaminingfiles

        internals--Maintenancecommands

        Typehelpfollowedbyaclassnameforalistofcommandsinthatclass.

        Typehelpfollowedbycommandnameforfulldocumentation.

        Commandnameabbreviationsareallowedifunambiguous.

        上述列出了gdb各個分類的命令,注意底部的加粗部分說明其為分類命令。接下來可以具體查找各分類的命令,如下所示:

        (gdb)helpdata

        Examiningdata.

        Listofcommands:

        call--Callafunctionintheprogram

        deletedisplay--Cancelsomeexpressionstobedisplayedwhenprogramstops

        deletemem--Deletememoryregion

        disabledisplay--Disablesomeexpressionstobedisplayedwhenprogramstops

        Typehelpfollowedbycommandnameforfulldocumentation.

        Commandnameabbreviationsareallowedifunambiguous.

        若用戶想要查找call命令,就可鍵入“helpcall”。

        (gdb)helpcall

        Callafunctionintheprogram.

        Theargumentisthefunctionnameandarguments,inthenotationofthe

        currentworkinglanguage.Theresultisprintedandsavedinthevalue

        history,ifitisnotvoid.

        當然,若用戶已知命令名,直接鍵入“help[command]”也是可以的。

        gdb中的命令主要分為以下幾類:工作環境相關命令、設置斷點與恢復命令、源代碼查看命令、查看運行數據相關命令及修改運行參數命令。以下就分別對這幾類命令進行講解。

        1.工作環境相關命令

        gdb中不僅可以調試所運行的程序,而且還可以對程序相關的工作環境進行相應的設定,甚至還可以使用shell中的命令進行相關的操作,其功能極其強大。gdb常見工作環境相關命令如表3.11所示。

        表3.11 gdb工作環境相關命令

        命令格式

        含義

        setargs運行時的參數

        指定運行時參數,如setargs2

        showargs

        查看設置好的運行參數

        Pathdir

        設定程序的運行路徑

        showpaths

        查看程序的運行路徑

        setenvironmentvar[=value]

        設置環境變量

        showenvironment[var]

        查看環境變量

        cddir

        進入dir目錄,相當于shell中的cd命令

        Pwd

        顯示當前工作目錄

        shellcommand

        運行shell的command命令

        2.設置斷點與恢復命令

        gdb中設置斷點與恢復的常見命令如表3.12所示。

        表3.12 gdb設置斷點與恢復相關命令

        命令格式

        含義

        Infob

        查看所設斷點

        break[文件名:]行號或函數名條件表達式>

        設置斷點

        tbreak[文件名:]行號或函數名條件表達式>

        設置臨時斷點,到達后被自動刪除

        delete[斷點號]

        刪除指定斷點,其斷點號為“infob”中的第一欄。若缺省斷點號則刪除所有斷點

        disable[斷點號]

        停止指定斷點,使用“infob”仍能查看此斷點。同delete一樣,若缺省斷點號則停止所有斷點

        enable[斷點號]

        激活指定斷點,即激活被disable停止的斷點

        condition[斷點號]條件表達式>

        修改對應斷點的條件

        ignore[斷點號]num>

        在程序執行中,忽略對應斷點num次

        Step

        單步恢復程序運行,且進入函數調用

        Next

        單步恢復程序運行,但不進入函數調用

        Finish

        運行程序,直到當前函數完成返回

        C

        繼續執行函數,直到函數結束或遇到新的斷點

        設置斷點在gdb的調試中非常重要,下面著重講解gdb中設置斷點的方法。

        gdb中設置斷點有多種方式:其一是按行設置斷點;另外還可以設置函數斷點和條件斷點。下面具體介紹后兩種設置斷點的方法。

        ①函數斷點。

        gdb中按函數設置斷點只需把函數名列在命令“b”之后,如下所示:

        (gdb)btest.c:sum(可以簡化為bsum)

        Breakpoint1at0x80484ba:filetest.c,line16.

        (gdb)infob

        NumTypeDispEnbAddressWhat

        1breakpointkeepy0x080484bainsumattest.c:16

        要注意的是,此時的斷點實際是在函數的定義處,也就是在16行處(注意第16行還未執行)。

        ②條件斷點。

        gdb中設置條件斷點的格式為:b行數或函數名if表達式。具體實例如下所示:

        (gdb)b8ifi==10

        Breakpoint1at0x804848c:filetest.c,line8.

        (gdb)infob

        NumTypeDispEnbAddressWhat

        1breakpointkeepy0x0804848cinmainattest.c:8

        stoponlyifi==10

        (gdb)r

        Startingprogram:/home/yul/test

        Thesumof1-mis1275

        Breakpoint1,main()attest.c:9

        9n+=i;

        (gdb)pi

        $1=10

        可以看到,該例中在第8行(也就是運行完第7行的for循環)設置了一個“i==0”的條件斷點,在程序運行之后可以看出,程序確實在i為10時暫停運行。

        3.gdb中源碼查看相關命令

        在gdb中可以查看源碼以方便其他操作,它的常見相關命令如表3.13所示。

        表3.13 gdb源碼查看相關相關命令

        命令格式

        含義

        list行號>|函數名>

        查看指定位置代碼

        file[文件名]

        加載指定文件

        forward-search正則表達式

        源代碼的前向搜索

        reverse-search正則表達式

        源代碼的后向搜索

        dirDIR

        將路徑DIR添加到源文件搜索的路徑的開頭

        showdirectories

        顯示源文件的當前搜索路徑

        infoline

        顯示加載到gdb內存中的代碼

        4.gdb中查看運行數據相關命令

        gdb中查看運行數據是指當程序處于“運行”或“暫停”狀態時,可以查看的變量及表達式的信息,其常見命令如表3.14所示。

        表3.14 gdb查看運行數據相關命令

        命令格式

        含義

        print表達式|變量

        查看程序運行時對應表達式和變量的值

        xn/f/u>

        查看內存變量內容。其中n為整數表示顯示內存的長度,f表示顯示的格式,u表示從當前地址往后請求顯示的字節數

        display表達式

        設定在單步運行或其他情況中,自動顯示的對應表達式的內容

        backtrace

        查看當前棧的情況,即可以查到哪些被調用的函數尚未返回

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        linux相關文章:linux教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 永登县| 黄大仙区| 永善县| 荥阳市| 农安县| 昆山市| 延边| 东乡| 齐齐哈尔市| 顺平县| 孟津县| 隆回县| 措勤县| 漳平市| 遂宁市| 错那县| 克拉玛依市| 沁源县| 连南| 拜城县| 邯郸市| 介休市| 云林县| 平谷区| 高碑店市| 滁州市| 万全县| 永平县| 潼南县| 浙江省| 乐东| 常德市| 天津市| 东源县| 临城县| 惠来县| 杂多县| 镇赉县| 桂阳县| 九龙城区| 福安市|