<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Linux下C編程基礎之:gdb調(diào)試器

          Linux下C編程基礎之:gdb調(diào)試器

          作者: 時間:2013-09-13 來源:網(wǎng)絡 收藏

          本文引用地址:http://www.ex-cimer.com/article/257150.htm

          3.4

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

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

          3.4.1gdb使用流程

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

          首先,打開下的編輯器vi或者emacs,編輯如下代碼(由于為了更好地熟悉gdb的操作,筆者在此使用vi編輯,希望讀者能夠參見3.3節(jié)中對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”,這樣編譯出的可執(zhí)行代碼中才包含調(diào)試信息,否則之后gdb無法載入該可執(zhí)行文件。

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

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

          [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操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關文章:linux教程



          上一頁 1 2 3 4 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();