日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GDB调试精粹

發(fā)布時間:2025/3/17 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GDB调试精粹 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? 一:列文件清單?
1. List?
(gdb) list line1,line2?

二:執(zhí)行程序?
要想運行準(zhǔn)備調(diào)試的程序,可使用run命令,在它后面可以跟隨發(fā)給該程序的任何參數(shù),包括標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出說明符(<和>)和外殼通配符(*、?、[、])在內(nèi)。?
如果你使用不帶參數(shù)的run命令,gdb就再次使用你給予前一條run命令的參數(shù),這是很有用的。?
利用set args 命令就可以修改發(fā)送給程序的參數(shù),而使用show args 命令就可以查看其缺省參數(shù)的列表。?
(gdb)set args –b –x?
(gdb) show args?
backtrace命令為堆棧提供向后跟蹤功能。?
Backtrace 命令產(chǎn)生一張列表,包含著從最近的過程開始的所以有效過程和調(diào)用這些過程的參數(shù)。?

三:顯示數(shù)據(jù)?
利用print 命令可以檢查各個變量的值。?
(gdb) print p (p為變量名)?
whatis 命令可以顯示某個變量的類型?
(gdb) whatis p?
type = int *?

print 是gdb的一個功能很強(qiáng)的命令,利用它可以顯示被調(diào)試的語言中任何有效的表達(dá)式。表達(dá)式除了包含你程序中的變量外,還可以包含以下內(nèi)容:?
l 對程序中函數(shù)的調(diào)用?
(gdb) print find_entry(1,0)?
l 數(shù)據(jù)結(jié)構(gòu)和其他復(fù)雜對象?
(gdb) print *table_start?
$8={e=reference=’\000’,location=0x0,next=0x0}?
l 值的歷史成分?
(gdb)print $1 ($1為歷史記錄變量,在以后可以直接引用 $1 的值)?
l 人為數(shù)組?
人為數(shù)組提供了一種去顯示存儲器塊(數(shù)組節(jié)或動態(tài)分配的存儲區(qū))內(nèi)容的方法。早期的調(diào)試程序沒有很好的方法將任意的指針換成一個數(shù)組。就像對待參數(shù)一樣,讓我們查看內(nèi)存中在變量h后面的10個整數(shù),一個動態(tài)數(shù)組的語法如下所示:?
base@length?
因此,要想顯示在h后面的10個元素,可以使用h@10:?
(gdb)print h@10?
$13=(-1,345,23,-234,0,0,0,98,345,10)?

四:斷點(breakpoint)?
break命令(可以簡寫為b)可以用來在調(diào)試的程序中設(shè)置斷點,該命令有如下四種形式:?
l break line-number 使程序恰好在執(zhí)行給定行之前停止。?
l break function-name 使程序恰好在進(jìn)入指定的函數(shù)之前停止。?
l break line-or-function if condition 如果condition(條件)是真,程序到達(dá)指定行或函數(shù)時停止。?
l break routine-name 在指定例程的入口處設(shè)置斷點?

如果該程序是由很多原文件構(gòu)成的,你可以在各個原文件中設(shè)置斷點,而不是在當(dāng)前的原文件中設(shè)置斷點,其方法如下:?
(gdb) break filename:line-number?
(gdb) break filename:function-name?

要想設(shè)置一個條件斷點,可以利用break if命令,如下所示:?
(gdb) break line-or-function if expr?
例:?
(gdb) break 46 if testsize==100?

從斷點繼續(xù)運行:countinue 命令?
五.斷點的管理?

1. 顯示當(dāng)前gdb的斷點信息:?
(gdb) info break?
他會以如下的形式顯示所有的斷點信息:?
Num Type Disp Enb Address What?
1 breakpoint keep y 0x000028bc in init_random at qsort2.c:155?
2 breakpoint keep y 0x0000291c in init_organ at qsort2.c:168?
(gdb)?
2.刪除指定的某個斷點:?
(gdb) delete breakpoint 1?
該命令將會刪除編號為1的斷點,如果不帶編號參數(shù),將刪除所有的斷點?
(gdb) delete breakpoint?
3.禁止使用某個斷點?
(gdb) disable breakpoint 1?
該命令將禁止斷點 1,同時斷點信息的 (Enb)域?qū)⒆優(yōu)?n?
4.允許使用某個斷點?
(gdb) enable breakpoint 1?
該命令將允許斷點 1,同時斷點信息的 (Enb)域?qū)⒆優(yōu)?y?
5.清除原文件中某一代碼行上的所有斷點?
(gdb)clean number?
注:number 為原文件的某個代碼行的行號?
六.變量的檢查和賦值?
l whatis:識別數(shù)組或變量的類型?
l ptype:比whatis的功能更強(qiáng),他可以提供一個結(jié)構(gòu)的定義?
l set variable:將值賦予變量?
l print 除了顯示一個變量的值外,還可以用來賦值?

七.單步執(zhí)行?
l next?
不進(jìn)入的單步執(zhí)行?
l step?
進(jìn)入的單步執(zhí)行?
如果已經(jīng)進(jìn)入了某函數(shù),而想退出該函數(shù)返回到它的調(diào)用函數(shù)中,可使用命令finish?
八.函數(shù)的調(diào)用?
l call name 調(diào)用和執(zhí)行一個函數(shù)?
(gdb) call gen_and_sork( 1234,1,0 )?
(gdb) call printf(“abcd”)?
$1=4?
l finish 結(jié)束執(zhí)行當(dāng)前函數(shù),顯示其返回值(如果有的話)?

九.機(jī)器語言工具?
有一組專用的gdb變量可以用來檢查和修改計算機(jī)的通用寄存器,gdb提供了目前每一臺計算機(jī)中實際使用的4個寄存器的標(biāo)準(zhǔn)名字:?
l $pc : 程序計數(shù)器?
l $fp : 幀指針(當(dāng)前堆棧幀)?
l $sp : 棧指針?
l $ps : 處理器狀態(tài)?

十.信號?
gdb通??梢圆蹲降桨l(fā)送給它的大多數(shù)信號,通過捕捉信號,它就可決定對于正在運行的進(jìn)程要做些什么工作。例如,按CTRL-C將中斷信號發(fā)送給gdb,通常就會終止gdb。但是你或許不想中斷gdb,真正的目的是要中斷gdb正在運行的程序,因此,gdb要抓住該信號并停止它正在運行的程序,這樣就可以執(zhí)行某些調(diào)試操作。?

Handle命令可控制信號的處理,他有兩個參數(shù),一個是信號名,另一個是接受到信號時該作什么。幾種可能的參數(shù)是:?
l nostop 接收到信號時,不要將它發(fā)送給程序,也不要停止程序。?
l stop 接受到信號時停止程序的執(zhí)行,從而允許程序調(diào)試;顯示一條表示已接受到信號的消息(禁止使用消息除外)?
l print 接受到信號時顯示一條消息?
l noprint 接受到信號時不要顯示消息(而且隱含著不停止程序運行)?
l pass 將信號發(fā)送給程序,從而允許你的程序去處理它、停止運行或采取別的動作。?
l nopass 停止程序運行,但不要將信號發(fā)送給程序。?
例如,假定你截獲SIGPIPE信號,以防止正在調(diào)試的程序接受到該信號,而且只要該信號一到達(dá),就要求該程序停止,并通知你。要完成這一任務(wù),可利用如下命令:?
(gdb) handle SIGPIPE stop print?
請注意,UNIX的信號名總是采用大寫字母!你可以用信號編號替代信號名?
如果你的程序要執(zhí)行任何信號處理操作,就需要能夠測試其信號處理程序,為此,就需要一種能將信號發(fā)送給程序的簡便方法,這就是signal命令的任務(wù)。該 命令的參數(shù)是一個數(shù)字或者一個名字,如SIGINT。假定你的程序已將一個專用的SIGINT(鍵盤輸入,或CTRL-C;信號2)信號處理程序設(shè)置成采 取某個清理動作,要想測試該信號處理程序,你可以設(shè)置一個斷點并使用如下命令:?
(gdb) signal 2?
continuing with signal SIGINT(2)?
該程序繼續(xù)執(zhí)行,但是立即傳輸該信號,而且處理程序開始運行.?

十一. 原文件的搜索?
search text:該命令可顯示在當(dāng)前文件中包含text串的下一行。?
Reverse-search text:該命令可以顯示包含text 的前一行。?

十二.UNIX接口?
shell 命令可啟動UNIX外殼,CTRL-D退出外殼,返回到 gdb.?

十三.命令的歷史?
為了允許使用歷史命令,可使用 set history expansion on 命令?
(gdb) set history expansion on?

小結(jié):常用的gdb命令?
backtrace 顯示程序中的當(dāng)前位置和表示如何到達(dá)當(dāng)前位置的棧跟蹤(同義詞:where)?
breakpoint 在程序中設(shè)置一個斷點?
cd 改變當(dāng)前工作目錄?
clear 刪除剛才停止處的斷點?
commands 命中斷點時,列出將要執(zhí)行的命令?
continue 從斷點開始繼續(xù)執(zhí)行?
delete 刪除一個斷點或監(jiān)測點;也可與其他命令一起使用?
display 程序停止時顯示變量和表達(dá)時?
down 下移棧幀,使得另一個函數(shù)成為當(dāng)前函數(shù)?
frame 選擇下一條continue命令的幀?
info 顯示與該程序有關(guān)的各種信息?
jump 在源程序中的另一點開始運行?
kill 異常終止在gdb 控制下運行的程序?
list 列出相應(yīng)于正在執(zhí)行的程序的原文件內(nèi)容?
next 執(zhí)行下一個源程序行,從而執(zhí)行其整體中的一個函數(shù)?
print 顯示變量或表達(dá)式的值?
pwd 顯示當(dāng)前工作目錄?
pype 顯示一個數(shù)據(jù)結(jié)構(gòu)(如一個結(jié)構(gòu)或C++類)的內(nèi)容?
quit 退出gdb?
reverse-search 在源文件中反向搜索正規(guī)表達(dá)式?
run 執(zhí)行該程序?
search 在源文件中搜索正規(guī)表達(dá)式?
set variable 給變量賦值?
signal 將一個信號發(fā)送到正在運行的進(jìn)程?
step 執(zhí)行下一個源程序行,必要時進(jìn)入下一個函數(shù)?
undisplay display命令的反命令,不要顯示表達(dá)式?
until 結(jié)束當(dāng)前循環(huán)?
up 上移棧幀,使另一函數(shù)成為當(dāng)前函數(shù)?
watch 在程序中設(shè)置一個監(jiān)測點(即數(shù)據(jù)斷點)?
whatis 顯示變量或函數(shù)類型?

轉(zhuǎn)載于:https://blog.51cto.com/sourberry/517892

總結(jié)

以上是生活随笔為你收集整理的GDB调试精粹的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲激情视频在线观看 | 大尺度激情吻胸视频 | 91大奶| 免费看片亚洲 | 超碰女 | 午夜在线| 99久久婷婷国产综合精品电影 | 成熟了的熟妇毛茸茸 | 国产日韩欧美在线观看视频 | 亚洲成人免费视频 | 黄色视屏在线看 | 少女与动物高清版在线观看 | av观看免费在线 | 在线观看波多野结衣 | 成人免费视频观看 | 福利在线免费视频 | 美脚の诱脚舐め脚 | 中文字幕乱码亚洲无线三区 | 免费性网站 | 久久久精品91 | 久久伊人久久 | 久久久久久久性 | 在线成人免费视频 | 精品国产av 无码一区二区三区 | 久久久91视频 | 久久免费看少妇高潮 | 久久精品视频观看 | 自拍偷拍99 | 亚洲欧美日韩专区 | 免费精品无码AV片在线观看黄 | 69av网| 亚洲无人区码一码二码三码 | 国产精品揄拍一区二区 | 麻豆av一区二区三区 | 在线日韩视频 | 在线无码va中文字幕无码 | 性久久久久久久久久久久 | 日韩成人午夜 | www.激情网 | 久久国内 | 亚洲欧美另类中文字幕 | 91av官网| 日韩在线精品视频一区二区涩爱 | 久久字幕 | 99久久精品免费看国产交换 | 蜜乳av一区 | 欧美一区二区日韩一区二区 | 国产精品自拍电影 | 国产精品福利一区二区 | 婷婷综合网 | 国产亚洲无 | 欧美性动态图 | 黑料av在线 | aaa午夜| 欧美成人精品欧美一级乱 | 亚洲午夜18毛片在线看 | 三级网站免费 | 久久网国产 | 国产探花视频在线观看 | 毛片视频网站 | 国产一区二区三区视频免费观看 | 极品美女一区二区三区 | 日韩综合一区 | www.好吊色 | 亚洲国产成人精品女人久久久 | 亚洲欧美高清在线 | 视频在线观看你懂的 | 精品久久香蕉国产线看观看亚洲 | 欧美成网 | 亚洲激情成人网 | 日韩在线精品视频 | 超碰极品| 一级黄色片在线观看 | 日韩 欧美 亚洲 | 国产欧美一区二区三区白浆喷水 | 亚洲乱码av | 一级毛片儿 | 欧美激情精品久久久久久免费 | 欧美在线视频免费观看 | 蜜桃视频黄色 | 欧美精品乱码视频一二专区 | 亚洲色欧美另类 | 国产成人精品二区三区亚瑟 | 国产在线观看精品 | 狠狠综合网 | 日韩大片免费观看 | 强videoshd酒醉| 欧美特级黄色 | 天堂中文在线播放 | 亚洲黄色一区二区三区 | 狠狠干狠狠操 | 亚洲AV永久无码国产精品国产 | 天天夜夜人人 | 欧美三级韩国三级日本三斤 | 波多野结衣中文字幕一区二区 | 国产精品12页| 国产精品久久久久久69 | 黑花全肉高h湿play短篇 | 国产日韩精品视频 |