新聞中心

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

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

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

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

        3.4

        調試是所有程序員都會面臨的問題。如何提高程序員的調試效率,更好、更快地定位程序中的問題從而加快程序開發的進度,是大家都很關注的問題。就如讀者熟知的Windows下的一些調試工具,如VisualStudio自帶的設置斷點、單步跟蹤等,都受到了廣大用戶的贊賞。那么,在下有什么很好的調試工具呢?

        是一款GNU開發組織并發布的UNIX/下的程序調試工具。雖然,它沒有圖形化的友好界面,但是它強大的功能也足以與微軟的VisualStudio等工具媲美。下面就請跟隨筆者一步步學習

        3.4.1gdb使用流程

        這里給出了一個短小的程序,由此帶領讀者熟悉gdb的使用流程。建議讀者能夠動手實際操作一下。

        首先,打開下的編輯器vi或者emacs,編輯如下代碼(由于為了更好地熟悉gdb的操作,筆者在此使用vi編輯,希望讀者能夠參見3.3節中對vi的介紹,并熟練使用vi)。

        /*test.c*/

        #includestdio.h>

        intsum(intm);

        intmain()

        {

        inti,n=0;

        sum(50);

        for(i=1;i=50;i++)

        {

        n+=i;

        }

        printf(Thesumof1-50is%dn,n);

        }

        intsum(intm)

        {

        inti,n=0;

        for(i=1;i=m;i++)

        {

        n+=i;

        printf(Thesumof1-mis%dn,n);

        }

        }

        在保存退出后首先使用gcc對test.c進行編譯,注意一定要加上選項“-g”,這樣編譯出的可執行代碼中才包含調試信息,否則之后gdb無法載入該可執行文件。

        [root@localhostgdb]#gcc-gtest.c-otest

        雖然這段程序沒有錯誤,但調試完全正確的程序可以更加了解gdb的使用流程。接下來就啟動gdb進行調試。注意,gdb進行調試的是可執行文件,而不是如“.c”的源代碼,因此,需要先通過gcc編譯生成可執行文件才能用gdb進行調試。

        [root@localhostgdb]#gdbtest

        GNUgdbRedHatLinux(6.3.0.0-1.21rh)

        Copyright2004FreeSoftwareFoundation,Inc.

        GDBisfreesoftware,coveredbytheGNUGeneralPublicLicense,andyouare

        welcometochangeitand/ordistributecopiesofitundercertainconditions.

        Typeshowcopyingtoseetheconditions.

        ThereisabsolutelynowarrantyforGDB.Typeshowwarrantyfordetails.

        ThisGDBwasconfiguredasi386-redhat-linux-gnu...Usinghostlibthread_dblibrary/lib/libthread_db.so.1.

        (gdb)

        可以看出,在gdb的啟動畫面中指出了gdb的版本號、使用的庫文件等信息,接下來就進入了由“(gdb)”開頭的命令行界面了。

        (1)查看文件。

        在gdb中鍵入“l”(list)就可以查看所載入的文件,如下所示。

        注意

        在gdb的命令中都可使用縮略形式的命令,如“l”代表“list”,“b”代表“breakpoint”,“p”代表“print”等,讀者也可使用“help”命令查看幫助信息。

        (gdb)l

        1#includestdio.h>

        2intsum(intm);

        3intmain()

        4{

        5inti,n=0;

        6sum(50);

        7for(i=1;i=50;i++)

        8{

        9 n+=i;

        10}

        (gdb)l

        11printf(Thesumof1~50is%dn,n);

        12

        13}

        14intsum(intm)

        15{

        16inti,n=0;

        17for(i=1;i=m;i++)

        18{

        19n+=i;

        20}

        21printf(Thesumof1~mis=%dn,n);

        20}

        可以看出,gdb列出的源代碼中明確地給出了對應的行號,這樣就可以大大地方便代碼的定位。

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

        linux相關文章:linux教程



        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 天津市| 泰兴市| 西贡区| 和田市| 青岛市| 黄山市| 曲阳县| 合肥市| 开远市| 格尔木市| 阳春市| 渝中区| 德州市| 武定县| 普洱| 和田市| 凤山市| 肥乡县| 晋中市| 辽源市| 陵水| 留坝县| 岑巩县| 益阳市| 盖州市| 治多县| 唐河县| 锡林郭勒盟| 同仁县| 黎平县| 阿鲁科尔沁旗| 南昌市| 定襄县| 武汉市| 拜城县| 芜湖县| 靖安县| 谢通门县| 拜泉县| 民县| 江口县|