linux系統(tǒng)調(diào)試工具GDB命令詳細(xì)解釋_第1頁(yè)
linux系統(tǒng)調(diào)試工具GDB命令詳細(xì)解釋_第2頁(yè)
linux系統(tǒng)調(diào)試工具GDB命令詳細(xì)解釋_第3頁(yè)
linux系統(tǒng)調(diào)試工具GDB命令詳細(xì)解釋_第4頁(yè)
linux系統(tǒng)調(diào)試工具GDB命令詳細(xì)解釋_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Linux中包含有一個(gè)很有用的調(diào)試工具gdb(GNU Debuger),它可以用來(lái)調(diào)試C和C+程序,功能不亞于Windows下的許多圖形界面的調(diào)試工具。和所有常用的調(diào)試工具一樣,gdb提供了以下功能:# 監(jiān)視程序中變量的值# 在程序中設(shè)置斷點(diǎn)# 程序的單步執(zhí)行在使用gdb前,必須先載入可執(zhí)行文件,因?yàn)橐M(jìn)行調(diào)試,文件中就必須包含調(diào)試信息,所以在用gcc或cc編譯時(shí)就需要用-g參數(shù)來(lái)打開(kāi)程序的調(diào)試選項(xiàng)。調(diào)試開(kāi)始時(shí),必須先載入要進(jìn)行調(diào)試的程序,可以用以下兩種方式:* 在啟動(dòng)gdb后執(zhí)行以下命令:file 可執(zhí)行文件路徑* 在gdb啟動(dòng)時(shí)就載入程序:gdb 可執(zhí)行文件路徑載入程序后,接下來(lái)就是要進(jìn)行

2、斷點(diǎn)的設(shè)置,要監(jiān)視的變量的添加等工作,下面對(duì)在這個(gè)過(guò)程中常會(huì)用到的命令逐一進(jìn)行介紹:* list :顯示程序中的代碼,常用使用格式有:list輸出從上次調(diào)用list命令開(kāi)始往后的10行程序代碼。list -輸出從上次調(diào)用list命令開(kāi)始往前的10行程序代碼。list n輸出第n行附近的10行程序代碼。list function輸出函數(shù)function前后的10行程序代碼。* forward/search :從當(dāng)前行向后查找匹配某個(gè)字符串的程序行。使用格式:forward/search 字符串查找到的行號(hào)將保存在$_變量中,可以用print $_命令來(lái)查看。* reverse-search :和

3、forward/search相反,向前查找字符串。使用格式同上。* break :在程序中設(shè)置斷點(diǎn),當(dāng)程序運(yùn)行到指定行上時(shí),會(huì)暫停執(zhí)行。使用格式:break 要設(shè)置斷點(diǎn)的行號(hào)* tbreak :設(shè)置臨時(shí)斷點(diǎn),在設(shè)置之后只起作用一次。使用格式:tbreak 要設(shè)置臨時(shí)斷點(diǎn)的行號(hào)* clear :和break相反,clear用于清除斷點(diǎn)。使用格式:clear 要清除的斷點(diǎn)所在的行號(hào)* run :?jiǎn)?dòng)程序,在run后面帶上參數(shù)可以傳遞給正在調(diào)試的程序。* awatch :用來(lái)增加一個(gè)觀察點(diǎn)(add watch),使用格式:awatch 變量或表達(dá)式當(dāng)表達(dá)式的值發(fā)生改變或表達(dá)式的值被讀取時(shí),程序就會(huì)停

4、止運(yùn)行。* watch :與awatch類(lèi)似用來(lái)設(shè)置觀察點(diǎn),但程序只有當(dāng)表達(dá)式的值發(fā)生改變時(shí)才會(huì)停止運(yùn)行。使用格 式:watch 變量或表達(dá)式需要注意的是,awatch和watch都必須在程序運(yùn)行的過(guò)程中設(shè)置觀察點(diǎn),即可運(yùn)行run之后才能設(shè)置。* commands :設(shè)置在遇到斷點(diǎn)后執(zhí)行特定的指令。使用格式有:commands設(shè)置遇到最后一個(gè)遇到的斷點(diǎn)時(shí)要執(zhí)行的命令commands n設(shè)置遇到斷點(diǎn)號(hào)n時(shí)要執(zhí)行的命令注意,commands后面跟的是斷點(diǎn)號(hào),而不是斷點(diǎn)所在的行號(hào)。在輸入命令后,就可以輸入遇到斷點(diǎn)后要執(zhí)行的命令,每行一條命令,在輸入最后一條命令后輸入end就可以結(jié)束輸入。* dele

5、te :清除斷點(diǎn)或自動(dòng)顯示的表達(dá)式。使用格式:delete 斷點(diǎn)號(hào)* disable :讓指定斷點(diǎn)失效。使用格式:disable 斷點(diǎn)號(hào)列表斷點(diǎn)號(hào)之間用空格間隔開(kāi)。* enable :和disable相反,恢復(fù)失效的斷點(diǎn)。使用格式:enable 斷點(diǎn)編號(hào)列表* ignore :忽略斷點(diǎn)。使用格式:ignore 斷點(diǎn)號(hào) 忽略次數(shù)* condition :設(shè)置斷點(diǎn)在一定條件下才能生效。使用格式:condition 斷點(diǎn)號(hào) 條件表達(dá)式* cont/continue :使程序在暫停在斷點(diǎn)之后繼續(xù)運(yùn)行。使用格式:cont跳過(guò)當(dāng)前斷點(diǎn)繼續(xù)運(yùn)行。cont n跳過(guò)n次斷點(diǎn),繼續(xù)運(yùn)行。當(dāng)n為1時(shí),cont 1即

6、為cont。* jump :讓程序跳到指定行開(kāi)始調(diào)試。使用格式:jump 行號(hào)* next :繼續(xù)執(zhí)行語(yǔ)句,但是跳過(guò)子程序的調(diào)用。使用格式:next執(zhí)行一條語(yǔ)句next n執(zhí)行n條語(yǔ)句* nexti :?jiǎn)尾綀?zhí)行語(yǔ)句,但和next不同的是,它會(huì)跟蹤到子程序的內(nèi)部,但不打印出子程序內(nèi)部的語(yǔ)句。使用格式同上。* step :與next類(lèi)似,但是它會(huì)跟蹤到子程序的內(nèi)部,而且會(huì)顯示子程序內(nèi)部的執(zhí)行情況。使用格式同上。* stepi :與step類(lèi)似,但是比step更詳細(xì),是nexti和step的結(jié)合。使用格式同上。* whatis :顯示某個(gè)變量或表達(dá)式的數(shù)據(jù)類(lèi)型。使用格式:whatis 變量或表達(dá)式*

7、 ptype :和whatis類(lèi)似,用于顯示數(shù)據(jù)類(lèi)型,但是它還可以顯示typedef定義的類(lèi)型等。使用格式:ptype 變量或表達(dá)式* set :設(shè)置程序中變量的值。使用格式:set 變量=表達(dá)式set 變量:=表達(dá)式* display :增加要顯示值的表達(dá)式。使用格式:display 表達(dá)式* info display :顯示當(dāng)前所有的要顯示值的表達(dá)式。* delete display/undisplay :刪除要顯示值的表達(dá)式。使用格式:delete display/undisplay 表達(dá)式編號(hào)* disable display :暫時(shí)不顯示一個(gè)要表達(dá)式的值。使用格式:disable d

8、isplay 表達(dá)式編號(hào)* enable display :與disable display相反,使用表達(dá)式恢復(fù)顯示。使用格式:enable display 表達(dá)式編號(hào)* print :打印變量或表達(dá)式的值。使用格式:print 變量或表達(dá)式表達(dá)式中有兩個(gè)符號(hào)有特殊含義:$和$。$表示給定序號(hào)的前一個(gè)序號(hào),$表示給定序號(hào)的前兩個(gè)序號(hào)。如果$和$后面不帶數(shù)字,則給定序號(hào)為當(dāng)前序號(hào)。* backtrace :打印指定個(gè)數(shù)的棧幀(stack frame)。使用格式:backtrace 棧幀個(gè)數(shù)* frame :打印棧幀。使用格式:frame 棧幀號(hào)* info frame :顯示當(dāng)前棧幀的詳細(xì)信息。

9、* select-frame :選擇棧幀,選擇后可以用info frame來(lái)顯示棧幀信息。使用格式:select-frame 棧幀號(hào)* kill :結(jié)束當(dāng)前程序的調(diào)試。* quit :退出gdb。 如要查看所有的gdb命令,可以在gdb下鍵入兩次Tab(制表符),運(yùn)行“help command”可以查看命令command的詳細(xì)使用格式。本文僅對(duì)使用gdb調(diào)試過(guò)程中的一些常用指令的用法進(jìn)行簡(jiǎn)單地總結(jié),如要獲取關(guān)于gdb的更詳細(xì)的資料,請(qǐng)參閱gdb的官方文檔:/software/gdb/documentation/ gdb 命令大全1. 啟動(dòng)gdb 應(yīng)用程序名gd

10、b 應(yīng)用程序名 core文件名gdb 應(yīng)用程序名 pid             gdb -args 應(yīng)用程序名 應(yīng)用程序的運(yùn)行參數(shù)幫助:help    顯示幫助info    顯示程序狀態(tài)set     修改show    顯示gdb狀態(tài)運(yùn)行及運(yùn)行環(huán)境設(shè)置:set args    #   設(shè)置運(yùn)行

11、參數(shù)show args   #   顯示運(yùn)行參數(shù)set env 變量名 = 值     #   設(shè)置環(huán)境變量unset env 變量名      #   取消環(huán)境變量show env 變量名      #   顯示環(huán)境變量path 目錄名 #   把目錄添加到查找路徑中show paths #   顯示當(dāng)前查找路徑cd

12、 目錄    #   切換工作目錄pwd         #   顯示當(dāng)前工作目錄tty /dev/pts/1              #   修改程序的輸入輸出到指定的ttyset inferior-tty /dev/pts/1 #   修改程序的輸出到指定的ttyshow

13、inferior-ttyshow ttyrun 參數(shù)    #   運(yùn)行start 參數(shù) #   開(kāi)始運(yùn)行,但是會(huì)在main函數(shù)停止attach piddetachkill        #   退出Ctrl-C      #   中斷(SIGINT)Ctrl-線程操作:info threads    #   查看所有

14、線程信息thread 線程id #   切換到指定線程thread apply threadno | all 參數(shù)     #   對(duì)所有線程都應(yīng)用某個(gè)命令子進(jìn)程調(diào)試:set follow-fork-mode child|parent   #   fork后,需要跟蹤誰(shuí)show follow-fork-modeset detach-on-flow on|off          

15、; #   fork后,需要兩個(gè)都跟蹤嗎info forks                          #   顯示所有進(jìn)程信息fork 進(jìn)程id             

16、            #   切換到某個(gè)進(jìn)程detach-fork 進(jìn)程id                  #   不再跟蹤某個(gè)進(jìn)程delete fork 進(jìn)程id         &

17、#160;        #   kill某個(gè)進(jìn)程并停止對(duì)它的跟蹤檢查點(diǎn):     checkpoint/restart查看停止原因:info program斷點(diǎn)(breakpoint):   程序運(yùn)行到某處就會(huì)中斷break(b)    行號(hào)|函數(shù)名|程序地址 | +/-offset | filenam:func   if 條件   #   在指定位置設(shè)置

18、斷點(diǎn)tbreak      .     #   與break相似,只是設(shè)置一次斷點(diǎn)hbreak      .     #   與break相似,只是設(shè)置硬件斷點(diǎn),需要硬件支持thbreak     .     #   與break相似,只是設(shè)置一次性硬件斷點(diǎn),需要硬件支持rbre

19、ak      正則表達(dá)式 #   給一批滿足條件的函數(shù)打上斷點(diǎn)info break 斷點(diǎn)號(hào) #   查看某個(gè)斷點(diǎn)或所有斷點(diǎn)信息set breadpoint pending auto|on|off #   查看如果斷點(diǎn)位置沒(méi)有找到時(shí)行為show breakpoint pending觀察點(diǎn)(watchpoint): 表達(dá)式的值修改時(shí)會(huì)被中斷watch   表達(dá)式         

20、 #   當(dāng)表達(dá)式被寫(xiě)入,并且值被改變時(shí)中斷rwatch 表達(dá)式          #   當(dāng)表達(dá)式被讀時(shí)中斷awatch 表達(dá)式          #   當(dāng)表達(dá)式被讀或?qū)憰r(shí)中斷info watchpoints    set can-use-hw-watchpoints 值 #   設(shè)置使用的硬件觀察點(diǎn)的數(shù)

21、show can-use-hw-watchpoints rwatch與awatch需要有硬件支持,另外如果是對(duì)局部變量使用watchpoint,那退出作用域時(shí)觀察點(diǎn)會(huì)自動(dòng)被刪除另外在多線程情況下,gdb的watchpoint只對(duì)一個(gè)線程有效捕獲點(diǎn)(catchpoint): 程序發(fā)生某個(gè)事件時(shí)停止,如產(chǎn)生異常時(shí)catch   事件名事件包括:throw           #   產(chǎn)生c+異常catch    

22、0;      #   捕獲到c+異常exec/fork/vfork #   一個(gè)exec/fork/vfork函數(shù)調(diào)用,只對(duì)HP-UXload/unload    庫(kù)名 #   加載/卸載共享庫(kù)事件,對(duì)只HP-UXtcatch 事件名          #   一次性catchinfo    break斷點(diǎn)操作:cl

23、ear   函數(shù)名|行號(hào)   #   刪除斷點(diǎn),無(wú)參數(shù)表示刪衛(wèi)當(dāng)前位置delete 斷點(diǎn)號(hào)        #   刪除斷點(diǎn),無(wú)參數(shù)表示刪所有斷點(diǎn)disable 斷點(diǎn)號(hào)enable 斷點(diǎn)號(hào)condition   斷點(diǎn)號(hào) 條件    #   增加斷點(diǎn)條件condition   斷點(diǎn)號(hào)      

24、0;   #   刪除斷點(diǎn)條件ignore      斷點(diǎn)號(hào) 數(shù)目    #   忽略斷點(diǎn)n次commands    斷點(diǎn)號(hào)          #   當(dāng)某個(gè)斷點(diǎn)中斷時(shí)打印條件條件end下面是一個(gè)例子,可以一直打印當(dāng)前的X值:commands    3printf "X:%d/n

25、",xcontend斷點(diǎn)后操作:continue(c) 忽略次數(shù) #   繼續(xù)執(zhí)行,忽略前面n次中斷fg          忽略次數(shù) #   繼續(xù)執(zhí)行,忽略前面n次中斷step(s)     n步       #   步進(jìn),重復(fù)n次next(n)     n步   &#

26、160;   #   前進(jìn),重復(fù)n次finish                  #   完成當(dāng)前函數(shù)調(diào)用,一直執(zhí)行到返回處,并打印返回值until(u)    位置      #   一直執(zhí)行到當(dāng)前行或指定位置,或是當(dāng)前函數(shù)返回advance  

27、   位置        #   前面到指定位置,如果當(dāng)前函數(shù)返回則停止,與until類(lèi)似stepi(si)   n步       #   精確的只執(zhí)行一個(gè)匯編指令,重復(fù)n次nexti(ni)   n步       #   精確的只執(zhí)行一個(gè)匯編指令,碰到函數(shù)跳過(guò),重復(fù)n次set step-

28、mode   on|off #   on時(shí),如果函數(shù)沒(méi)有調(diào)試信息也跟進(jìn)show step-mode信號(hào):info signals            #   列出所有信號(hào)的處理方式info handle             #   同上handle 信號(hào)  

29、60; 方式    #   改變當(dāng)前處理某個(gè)信號(hào)的方式方式包括:nostop #   當(dāng)信號(hào)發(fā)生時(shí)不停止,只打印信號(hào)曾經(jīng)發(fā)生過(guò)stop    #   停止并打印信號(hào)print   #   信號(hào)發(fā)生時(shí)打印noprint #   信號(hào)發(fā)生時(shí)不打印pass/noignore # gdb充許應(yīng)用程序看到這個(gè)信號(hào)nopass/ignore # gdb不充許應(yīng)用程序看到這個(gè)信號(hào)線程斷點(diǎn):break 行號(hào)信息 thread 線程號(hào)

30、 if 條件 #   只在某個(gè)線程內(nèi)加斷點(diǎn)線程調(diào)度鎖:set scheduler-locking on|off    #   off時(shí)所有線程都可以得到調(diào)度,on時(shí)只有當(dāng)前show scheduler-locking幀:frame(f) 幀號(hào)     #   不帶參數(shù)時(shí)顯示所有幀信息,帶參數(shù)時(shí)切換到指定幀frame   地址        #   切換到指定

31、地址的幀up      n         #   向上n幀down    n         #   向下n幀select-frame   幀號(hào) #   切換到指定幀并且不打印被轉(zhuǎn)換到的幀的信息up-silently n     #

32、60;  向上n幀,不顯示幀信息down-silently n   #   向下n幀,不顯示幀信息調(diào)用鏈:backtrace(bt)   n|-n|full #   顯示當(dāng)前調(diào)用鏈,n限制顯示的數(shù)目,-n表示顯示后n個(gè),n表示顯示前n個(gè),full的話還會(huì)顯示變量信息使用 thread apply all bt 就可以顯示所有線程的調(diào)用信息set backtrace past-main on|off show backtrace past-main set backtrace past-entry on|o

33、ff show backtrace past-entryset backtrace limit n           #   限制調(diào)用信息的顯示層數(shù)show backtrace limit顯示幀信息:info    frame       #   顯示當(dāng)前幀信息info    frame addr #   顯示指定地

34、址的幀信息info    args        #   顯示幀的參數(shù)info    locals      #   顯示局部變量信息info    catch       #   顯示本幀異常信息顯示行號(hào):list(l) 行號(hào)|函數(shù)|文件:行號(hào)  

35、 #   顯示指定位置的信息,無(wú)參數(shù)為當(dāng)前位置list    -                       #   顯示當(dāng)前行之前的信息list    first,last         

36、;     #   從frist顯示到last行l(wèi)ist    ,last                   #   從當(dāng)前行顯示到last行l(wèi)ist    frist,         

37、         #   從指定行顯示list    +                       #   顯示上次list后顯示的內(nèi)容list    -   

38、0;                   #   顯示上次list前面的內(nèi)容在上面,first和last可以是下面類(lèi)型:行號(hào)+偏移-偏移文件名:行號(hào)函數(shù)名函數(shù)名:行號(hào)set listsize    n              

39、#   修改每次顯示的行數(shù)show listsize編輯:edit    行號(hào)|函數(shù)|函數(shù)名:行號(hào)|文件名:函數(shù)名 # 編輯指定位置查找:search          表示式      #   向前查找表達(dá)式reverse-search 表示式      #   向后查找表達(dá)式指定源碼目錄:directory(dir

40、) 目錄名    #   指定源文件查找目錄show directories源碼與機(jī)器碼:info line 函數(shù)名|行號(hào)     #   顯示指定位置對(duì)應(yīng)的機(jī)器碼地址范圍disassemble 函數(shù)名 | 起始地址 結(jié)束地址    #   對(duì)指定范圍進(jìn)行反匯編set disassembly-flavor att|intel   #   指定匯編代碼形式show disassembly-flavo

41、r 查看數(shù)據(jù):ptype   表達(dá)式      #   查看某個(gè)表達(dá)式的類(lèi)型print /f 表達(dá)式 #   按格式查看表達(dá)式內(nèi)容,/f是格式化set print address on|off   #   打印時(shí)是不是顯示地址信息show print addressset print symbol-filename on|off # 是不是顯示符號(hào)所在文件等信息show print symbol-filenameset print ar

42、ray on | off    #   是不是打印數(shù)組show print arrayset print array index   on | off    #   是不是打印下標(biāo)show print array index.表達(dá)式可以用下面的修飾符:varn           #   表示把var當(dāng)成長(zhǎng)度為n的數(shù)組filename:var &#

43、160; #   表示打印某個(gè)函數(shù)內(nèi)的變量,filename可以換成其它范圍符如文件名type var     #   表示把var當(dāng)成type類(lèi)型輸出格式:x               #   16進(jìn)制d            

44、0;  #   10進(jìn)制u               #   無(wú)符號(hào)o               #   8進(jìn)制t           

45、    #   2進(jìn)制a               #   地址c               #   字符f          

46、;     #   浮點(diǎn)查看內(nèi)存:x   /nfu    地址    #   查看內(nèi)存n       重復(fù)n次f       顯示格式,為print使用的格式u       每個(gè)單元的大小,為b     

47、60; byteh       2 bytew       4 byteg       8 byte自動(dòng)顯示:display /fmt 表達(dá)式 #   每次停止時(shí)都會(huì)顯示表達(dá)式,fmt與print的格式一樣,如果是內(nèi)存地址,那fmt可像 x的參數(shù)一樣undisplay   顯示編號(hào)delete display 顯示編號(hào)    # 

48、0; 這兩個(gè)都是刪附某個(gè)顯示disable display 顯示編號(hào)    #   禁止某個(gè)顯示enable display 顯示編號(hào)     #   重顯示display                     #   顯示當(dāng)前顯示內(nèi)容info display

49、0;               #   查看所有display項(xiàng)查看變量歷史:show values 變量名 n     #   顯示變量的上次顯示歷史,顯示n條show values 變量名 +       #   繼續(xù)上次顯示內(nèi)容便利變量:   (聲明變量的別名以方便使用)

50、set $foo    = *object_ptr   #   聲明foo為object_ptr的便利變量init-if-undefined $var = expression #   如果var還未定義則賦值show convenience內(nèi)部便利變量:$_      上次x查看的地址$_$_exitcode 程序垢退出碼寄存器:into registers      #   除了浮點(diǎn)

51、寄存器外所有寄存器info all-registers #   所有寄存器into registers 寄存器名     #   指定寄存器內(nèi)容info float          #   查看浮點(diǎn)寄存器狀態(tài)info vector         #   查看向量寄存器狀態(tài)gdb為一些內(nèi)部寄存器定義了名字,

52、如$pc(指令),$sp(棧指針),$fp(棧幀),$ps(程序狀態(tài))p /x $pc    #   查看pc寄存器當(dāng)前值x /i $pc    #   查看要執(zhí)行的下一條指令set $sp += 4 # 移動(dòng)棧指針內(nèi)核中信息:info udot       #   查看內(nèi)核中user struct信息info auxv       #  

53、; 顯示auxv內(nèi)容(auxv是協(xié)助程序啟動(dòng)的環(huán)境變量的)內(nèi)存區(qū)域限制:mem 起始地址 結(jié)構(gòu)地址 屬性 #   對(duì)地始地址,結(jié)構(gòu)地址)區(qū)域內(nèi)存進(jìn)行保護(hù),如果結(jié)構(gòu)地址為0表示地址最大值0xffffffffdelete mem 編號(hào)            #   刪除一個(gè)內(nèi)存保護(hù)disable mem 編號(hào)            #

54、0;  禁止一個(gè)內(nèi)存保護(hù)enable mem 編號(hào)             #   打開(kāi)一個(gè)內(nèi)存保護(hù)info mem                    #   顯示所有內(nèi)存保護(hù)信息保護(hù)的屬性包括:1. 內(nèi)存訪問(wèn)模式: 

55、0; ro | wo |rw2. 內(nèi)存訪問(wèn)大小:   8 | 16 | 32 | 64    如果不限制,表示可按任意大小訪問(wèn)3. 數(shù)據(jù)緩存:       cache | nocache     cache表示充許gdb緩存目標(biāo)內(nèi)存 內(nèi)存復(fù)制到/從文件:dump 格式 memory 文件名 起始地址 結(jié)構(gòu)地址 #   把指定內(nèi)存段寫(xiě)到文件dump 格式 value 文件名 表達(dá)式   &

56、#160;        #   把指定值寫(xiě)到文件格式包括:binary      原始二進(jìn)制格式ihex        intel 16進(jìn)制格式srec        S-recored格式tekhex      tektronix 16進(jìn)制格式append bina

57、ry memory 文件名 起始地址 結(jié)構(gòu)地址 #   按2進(jìn)制追加到文件append binary value 文件名 表達(dá)式             #   按2進(jìn)制追加到文件restore 文件名 binary bias 起始地址 結(jié)構(gòu)地址 #   恢復(fù)文件中內(nèi)容到內(nèi)存.如果文件內(nèi)容是原始二進(jìn)制,需要指定binary參數(shù),不然會(huì)gdb自動(dòng)識(shí)別文件格式產(chǎn)生core dump文件gcore  

58、文件名    #   產(chǎn)生core dump文件字符集:set target-charset 字符集   # 聲明目標(biāo)機(jī)器的locale,如gdbserver所在機(jī)器set host-charset 字符集     # 聲明本機(jī)的localeset charset     字符集      # 聲明目標(biāo)機(jī)和本機(jī)的localeshow charsetshow host-charsetshow tar

59、get-charset緩存遠(yuǎn)程目標(biāo)的數(shù)據(jù):為提高性能可以使用數(shù)據(jù)緩存,不過(guò)gdb不知道volatile變量,緩存可能會(huì)顯示不正確的結(jié)構(gòu)set remotecache on | offshow remotecache info dcache         #   顯示數(shù)據(jù)緩存的性能C預(yù)處理宏:macro expand(exp) 表達(dá)式        #   顯示宏展開(kāi)結(jié)果macro expand-once(

60、expl) 表達(dá)式 #   顯示宏一次展開(kāi)結(jié)果macro info 宏名                 #   查看宏定義追蹤(tracepoint):   就是在某個(gè)點(diǎn)設(shè)置采樣信息,每次經(jīng)過(guò)這個(gè)點(diǎn)時(shí)只執(zhí)行已經(jīng)定義的采樣動(dòng)作但并不停止,最后再根據(jù)采樣結(jié)果進(jìn)行分析。采樣點(diǎn)定義:trace   位置     &

61、#160;      #   定義采樣點(diǎn)info tracepoints        #   查看采樣點(diǎn)列表delete trace 采樣點(diǎn)編號(hào) #   刪除采杰點(diǎn)disable trace 采樣點(diǎn)編號(hào) #   禁止采杰點(diǎn)enable trace 采樣點(diǎn)編號(hào) #   使用采杰點(diǎn)passcount 采樣點(diǎn)編號(hào) n #   當(dāng)通過(guò)采樣點(diǎn) n次后停止,不指定n則

62、在下一個(gè)斷點(diǎn)停止預(yù)定義動(dòng)作:預(yù)定義動(dòng)作以actions開(kāi)始,后面是一系列的動(dòng)作actions num           #   對(duì)采樣點(diǎn)num定義動(dòng)作行為:collect 表達(dá)式      #   采樣表達(dá)式信息一些表達(dá)式有特殊意義,如$regs(所有寄存器),$args(所有函數(shù)參數(shù)),$locals(所有局部變量)while-steping n     #

63、60;  當(dāng)執(zhí)行第n次時(shí)的動(dòng)作,下面跟自己的collect操作采樣控制:tstart                  #   開(kāi)始采樣tstop                   #   停止采樣

64、tstatus                 #   顯示當(dāng)前采樣的數(shù)據(jù)使用收集到的數(shù)據(jù):tfind start             #   查找第一個(gè)記錄tfind end | none       

65、#   停止查找tfind                   #   查找下一個(gè)記錄tfind -                 #   查找上一個(gè)記錄tfind tracepoint N

66、0;     #   查找 追蹤編號(hào)為N 的下一個(gè)記錄tfind pc 地址           #   查找代碼在指定地址的下一個(gè)記錄tfind range 起始,結(jié)束tfind outside 起始,結(jié)構(gòu)tfind line 文件名:行號(hào)tdump                   #   顯示當(dāng)前記錄中追蹤信息save-tracepoints 文件名 #   保存追蹤信息到指定文件,后面使用source命令讀追蹤中的便利

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論