<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/257150.htm

3.4

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

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

3.4.1gdb使用流程

這里給出了一個(gè)短小的程序,由此帶領(lǐng)讀者熟悉gdb的使用流程。建議讀者能夠動(dòng)手實(shí)際操作一下。

首先,打開(kāi)下的編輯器vi或者emacs,編輯如下代碼(由于為了更好地熟悉gdb的操作,筆者在此使用vi編輯,希望讀者能夠參見(jiàn)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進(jìn)行編譯,注意一定要加上選項“-g”,這樣編譯出的可執行代碼中才包含調試信息,否則之后gdb無(wú)法載入該可執行文件。

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

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

[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的啟動(dòng)畫(huà)面中指出了gdb的版本號、使用的庫文件等信息,接下來(lái)就進(jìn)入了由“(gdb)”開(kāi)頭的命令行界面了。

(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操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程



上一頁(yè) 1 2 3 4 下一頁(yè)

關(guān)鍵詞: C編程 Linux gdb調試器 操作系統

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>