版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024屆安徽省部分學(xué)校高三上學(xué)期期末考試歷史試題(解析版)
- 2024年遼寧輕工職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)完整答案
- 單位管理制度集粹選集【人事管理篇】十篇
- 《特種設(shè)備安全管理員》考試通關(guān)題庫(kù)(600題 含參考答案)
- 復(fù)習(xí)培優(yōu)卷01 第1-2單元(解析版)
- 2024年公司片區(qū)上半年工作總結(jié)
- 2010年高考語(yǔ)文試卷(新課標(biāo))(海南寧夏)(解析卷)
- 游戲設(shè)計(jì)崗位季度工作總結(jié)
- 網(wǎng)絡(luò)借貸用戶行為分析-洞察分析
- 郵政快遞智能客服-洞察分析
- 民法債權(quán)法學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年9月時(shí)政題庫(kù)(附答案)
- 消防工程火災(zāi)自動(dòng)報(bào)警及聯(lián)動(dòng)控制系統(tǒng)安裝施工方案
- 2024年氯化工藝作業(yè)模擬考試題庫(kù)試卷(含參考答案)
- 2024售后服務(wù)年終總結(jié)
- 中學(xué)消防安全應(yīng)急演練方案
- 2.1.1 區(qū)域發(fā)展的自然環(huán)境基礎(chǔ) 課件 高二地理人教版(2019)選擇性必修2
- ASTM-A269-A269M無(wú)縫和焊接奧氏體不銹鋼管
- 中、高級(jí)鉗工訓(xùn)練圖紙
- 2024-2030年中國(guó)車(chē)載動(dòng)態(tài)稱(chēng)重行業(yè)投融資規(guī)模與發(fā)展態(tài)勢(shì)展望研究報(bào)告
- 乒乓球教案完整版本
評(píng)論
0/150
提交評(píng)論