學(xué)習(xí)啦>學(xué)習(xí)電腦>操作系統(tǒng)>Linux教程>

gdb基本使用方法及常用命令

時(shí)間: 志藝942 分享

  GNU調(diào)試器(GNU Debugger, GDB)是一個(gè)開源的源代碼級的調(diào)試工具,其性能優(yōu)良、功能齊全、易于使用,在嵌入式系統(tǒng)開發(fā)過程中扮演著越來越重要的角色。接下來是小編為大家收集的gdb基本使用方法及常用命令,希望能幫到大家。

  gdb基本使用方法及常用命令

  一、編譯、鏈接成可執(zhí)行文件

  記得加入-g選項(xiàng)

  gcc -g gdbtest.c -o test

  二、啟動(dòng)gdb

  gdb filename ---- 本例中是gdb test,如下圖:

  或者

  gdb

  (gdb)file filename,如下圖:

  三、退出

  (gdb)quit

  四、基本操作

  (1)列出源代碼list,在提示符下打入list,會出現(xiàn)一部分源代碼,接著按回車會重復(fù)上一次命令

  可以利用help list查詢list的使用方法

  a.list 10 -- 以第10行為中心顯示

  b.顯示compute函數(shù) list compute

  c.列出10-15行的源代碼 list 10,15

  d.列出其他文件的相應(yīng)行或函數(shù)

  list gdbinc.h:1

  list gdbinc.h:max

  (2)運(yùn)行程序run

  如果需要參數(shù)可以在run后面跟上參數(shù)

  (3)設(shè)置斷點(diǎn)break

  a.在某行設(shè)置斷點(diǎn) break 7

  b.在某函數(shù)設(shè)置斷點(diǎn) break compute

  c.在其他文件設(shè)置斷點(diǎn)(行或函數(shù)名) break gdbinc.h:2 break gdbinc.h:max

  d.在某個(gè)地址設(shè)置斷點(diǎn) break *address (當(dāng)你調(diào)試的程序沒有源程序時(shí)使用)

  e.查詢斷點(diǎn)信息info break

  f.條件斷點(diǎn) break <linenum>or<func> if condition

  如:break 8 if a == 10

  g.開啟和關(guān)閉斷點(diǎn)

  disable 斷點(diǎn)號 (關(guān)閉)

  enable 斷點(diǎn)號 (開啟)

  enable once 斷點(diǎn)號 (開啟一次)

  enable delete 斷點(diǎn)號(開啟一次后刪除)

  h.刪除斷點(diǎn)

  delete 斷點(diǎn)號

  clear 清除當(dāng)前行的斷點(diǎn)

  i.繼續(xù)執(zhí)行continue,當(dāng)執(zhí)行到某處中斷時(shí),使其繼續(xù)執(zhí)行

  (4)單步執(zhí)行不進(jìn)入函數(shù)next

  (5)單步執(zhí)行進(jìn)入函數(shù)step

  (6)終止正在調(diào)試的程序kill

(7)監(jiān)視值變動(dòng)watch expression(當(dāng)你運(yùn)行run后,你想知道哪些值在運(yùn)行中被改變了,可以設(shè)置此)

  (8)監(jiān)視值被讀rwatch expression(基本同上)

  (9)在運(yùn)行時(shí)打印變量的值print expression

  print/F expression,其中F為格式(x--16進(jìn)制,d--有符號十進(jìn)制,u--無符號十進(jìn)制,f--浮點(diǎn)格式)

  (10)修改變量值set variable=value

  (11)執(zhí)行shell命令[shell 命令名]

  (12)不退出gdb產(chǎn)生可執(zhí)行文件[make,必須有Makefile文件]

  (13)info命令(此命令用處廣泛)

  a.info break查看斷點(diǎn)信息(見上面斷點(diǎn))

  b.info args查看當(dāng)前方法的參數(shù)

  c.info stack查看調(diào)用堆棧

  d.info source查看當(dāng)前源文件的信息

  e.info sources查看所有在程序中的源文件路徑

  (14)查看內(nèi)存命令 x/<n/f/u> <addr> n、f、u是可選的參數(shù)。<addr>表示一個(gè)內(nèi)存地址。

  n 是一個(gè)正整數(shù),表示顯示內(nèi)存的長度,也就是說從當(dāng)前地址向后顯示幾個(gè)地址的內(nèi)容。

  f 表示顯示的格式,參見上面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。

  u 表示從當(dāng)前地址往后請求的字節(jié)數(shù),如果不指定的話,GDB默認(rèn)是4個(gè)bytes。u參數(shù)可以用下面的字符來代替,b表示單字節(jié),h表示雙字節(jié),w表示四字節(jié),g表示八字節(jié)。當(dāng)我們指定了字節(jié)長度后,GDB會從指內(nèi)存定的內(nèi)存地址開始,讀寫指定字節(jié),并把其當(dāng)作一個(gè)值取出來。

  輸出格式

  一般來說,GDB會根據(jù)變量的類型輸出變量的值。但你也可以自定義GDB的輸出的格式。例如,你想輸出一個(gè)整數(shù)的十六進(jìn)制,或是二進(jìn)制來查看這個(gè)整型變量的中的位的情況。要做到這樣,你可以使用GDB的數(shù)據(jù)顯示格式:

  x 按十六進(jìn)制格式顯示變量。

  d 按十進(jìn)制格式顯示變量。

  u 按十六進(jìn)制格式顯示無符號整型。

  o 按八進(jìn)制格式顯示變量。

  t 按二進(jìn)制格式顯示變量。

  a 按十六進(jìn)制格式顯示變量。

  c 按字符格式顯示變量。

  f 按浮點(diǎn)數(shù)格式顯示變量。

  比如:上圖中 x/4dw 0xbffff650 指的是顯示4個(gè)單元的內(nèi)容,以10進(jìn)制顯示,每個(gè)單元長度為4個(gè)字節(jié)


看了“gdb基本使用方法及常用命令”還想看:

1.2014年9月計(jì)算機(jī)二級Access無紙化預(yù)測選擇題

2.c語言函數(shù)調(diào)用過程

3.嵌入式培訓(xùn)心得

4.簡潔的英語簡歷范文模板

2805467