freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

gdb用戶使用手冊-資料下載頁

2025-08-23 15:52本頁面
  

【正文】 Tree, form = {...}} show print union 查看聯(lián)合體數(shù)據(jù)的顯示方式 set print object on/off 在C++中,如果一個對象指針指向其派生類,如果打開這個選項,GDB會自動按照虛方法調(diào)用的規(guī)則顯示輸出,如果關(guān)閉這個選項的話,GDB就不管虛函數(shù)表了。這個選項默認(rèn)是off。 show print object 查看對象選項的設(shè)置。 set print staticmembers on/off 這個選項表示,當(dāng)顯示一個C++對象中的內(nèi)容是,是否顯示其中的靜態(tài)數(shù)據(jù)成員。默認(rèn)是on。 show print staticmembers 查看靜態(tài)數(shù)據(jù)成員選項設(shè)置。 set print vtbl on/off 當(dāng)此選項打開時,GDB將用比較規(guī)整的格式來顯示虛函數(shù)表時。其默認(rèn)是關(guān)閉的。 show print vtbl 查看虛函數(shù)顯示格式的選項。 歷史記錄當(dāng)你用GDB的print查看程序運(yùn)行時的數(shù)據(jù)時,你每一個print都會被GDB記錄下來。GDB會以$1, $2, $3 .....這樣的方式為你每一個print命令編上號。于是,你可以使用這個編號訪問以前的表達(dá)式,如$1。這個功能所帶來的好處是,如果你先前輸入了一個比較長的表達(dá)式,如果你還想查看這個表達(dá)式的值,你可以使用歷史記錄來訪問,省去了重復(fù)輸入。 GDB環(huán)境變量你可以在GDB的調(diào)試環(huán)境中定義自己的變量,用來保存一些調(diào)試程序中的運(yùn)行數(shù)據(jù)。要定義一個GDB的變量很簡單只需。使用GDB的set命令。GDB的環(huán)境變量和UNIX一樣,也是以$起頭。如: set $foo = *object_ptr 使用環(huán)境變量時,GDB會在你第一次使用時創(chuàng)建這個變量,而在以后的使用中,則直接對其賦值。環(huán)境變量沒有類型,你可以給環(huán)境變量定義任一的類型。包括結(jié)構(gòu)體和數(shù)組。 show convenience 該命令查看當(dāng)前所設(shè)置的所有的環(huán)境變量。 這是一個比較強(qiáng)大的功能,環(huán)境變量和程序變量的交互使用,將使得程序調(diào)試更為靈活便捷。例如: set $i = 0 print bar[$i++]contents 于是,當(dāng)你就不必,print bar[0]contents, print bar[1]contents地輸入命令了。輸入這樣的命令后,只用敲回車,重復(fù)執(zhí)行上一條語句,環(huán)境變量會自動累加,從而完成逐個輸出的功能。 查看寄存器要查看寄存器的值,很簡單,可以使用如下命令: info registers 查看寄存器的情況。(除了浮點(diǎn)寄存器) info allregisters 查看所有寄存器的情況。(包括浮點(diǎn)寄存器) info registers regname ... 查看所指定的寄存器的情況。 寄存器中放置了程序運(yùn)行時的數(shù)據(jù),比如程序當(dāng)前運(yùn)行的指令地址(ip),程序的當(dāng)前堆棧地址(sp)等等。你同樣可以使用print命令來訪問寄存器的情況,只需要在寄存器名字前加一個$符號就可以了。如:p $eip。 改變程序的執(zhí)行一旦使用GDB掛上被調(diào)試程序,當(dāng)程序運(yùn)行起來后,你可以根據(jù)自己的調(diào)試思路來動態(tài)地在GDB中更改當(dāng)前被調(diào)試程序的運(yùn)行線路或是其變量的值,這個強(qiáng)大的功能能夠讓你更好的調(diào)試你的程序,比如,你可以在程序的一次運(yùn)行中走遍程序的所有分支。 修改變量值修改被調(diào)試程序運(yùn)行時的變量值,在GDB中很容易實現(xiàn),使用GDB的print命令即可完成。如: (gdb) print x=4 x=4這個表達(dá)式是C/C++的語法,意為把變量x的值修改為4,如果你當(dāng)前調(diào)試的語言是Pascal,那么你可以使用Pascal的語法:x:=4。 在某些時候,很有可能你的變量和GDB中的參數(shù)沖突,如: (gdb) whatis width type = double (gdb) p width $4 = 13 (gdb) set width=47 Invalid syntax in expression. 因為,set width是GDB的命令,所以,出現(xiàn)了“Invalid syntax in expression”的設(shè)置錯誤,此時,你可以使用set var命令來告訴GDB,width不是你GDB的參數(shù),而是程序的變量名,如: (gdb) set var width=47 另外,還可能有些情況,GDB并不報告這種錯誤,所以保險起見,在你改變程序變量取值時,最好都使用set var格式的GDB命令。 跳轉(zhuǎn)執(zhí)行一般來說,被調(diào)試程序會按照程序代碼的運(yùn)行順序依次執(zhí)行。GDB提供了亂序執(zhí)行的功能,也就是說,GDB可以修改程序的執(zhí)行順序,可以讓程序執(zhí)行隨意跳躍。這個功能可以由GDB的jump命令來完: jump linespec 指定下一條語句的運(yùn)行點(diǎn)。linespce可以是文件的行號,可以是file:line格式,可以是+num這種偏移量格式。表式著下一條運(yùn)行語句從哪里開始。 jump address 這里的address是代碼行的內(nèi)存地址。 注意,jump命令不會改變當(dāng)前的程序棧中的內(nèi)容,所以,當(dāng)你從一個函數(shù)跳到另一個函數(shù)時,當(dāng)函數(shù)運(yùn)行完返回時進(jìn)行彈棧操作時必然會發(fā)生錯誤,可能結(jié)果還是非常奇怪的,甚至于產(chǎn)生程序Core Dump。所以最好是同一個函數(shù)中進(jìn)行跳轉(zhuǎn)。 熟悉匯編的人都知道,程序運(yùn)行時,有一個寄存器用于保存當(dāng)前代碼所在的內(nèi)存地址。所以,jump命令也就是改變了這個寄存器中的值。于是,你可以使用“set $pc”來更改跳轉(zhuǎn)執(zhí)行的地址。如: set $pc = 0x485 產(chǎn)生信號量使用singal命令,可以產(chǎn)生一個信號量給被調(diào)試的程序。如:中斷信號Ctrl+C。這非常方便于程序的調(diào)試,可以在程序運(yùn)行的任意位置設(shè)置斷點(diǎn),并在該斷點(diǎn)用GDB產(chǎn)生一個信號量,這種精確地在某處產(chǎn)生信號非常有利程序的調(diào)試。 語法是:signal singal,UNIX的系統(tǒng)信號量通常從1到15。所以singal取值也在這個范圍。 single命令和shell的kill命令不同,系統(tǒng)的kill命令發(fā)信號給被調(diào)試程序時,是由GDB截獲的,而single命令所發(fā)出一信號則是直接發(fā)給被調(diào)試程序的。 強(qiáng)制函數(shù)返回如果你的調(diào)試斷點(diǎn)在某個函數(shù)中,并還有語句沒有執(zhí)行完。你可以使用return命令強(qiáng)制函數(shù)忽略還沒有執(zhí)行的語句并返回。 return return expression 使用return命令取消當(dāng)前函數(shù)的執(zhí)行,并立即返回,如果指定了expression,那么該表達(dá)式的值會被認(rèn)作函數(shù)的返回值。 強(qiáng)制調(diào)用函數(shù)call expr 表達(dá)式中可以一是函數(shù),以此達(dá)到強(qiáng)制調(diào)用函數(shù)的目的。并顯示函數(shù)的返回值,如果函數(shù)返回值是void,那么就不顯示。 另一個相似的命令也可以完成這一功能——print,print后面可以跟表達(dá)式,所以也可以用他來調(diào)用函數(shù),print和call的不同是,如果函數(shù)返回void,call則不顯示,print則顯示函數(shù)返回值,并把該值存入歷史數(shù)據(jù)中。 在不同語言中使用GDBGDB支持下列語言:C, C++, Fortran, PASCAL, Java, Chill, assembly, 和 Modula2。一般說來,GDB會根據(jù)你所調(diào)試的程序來確定當(dāng)然的調(diào)試語言,比如:發(fā)現(xiàn)文件名后綴為“.c”的,GDB會認(rèn)為是C程序。文件名后綴為“.C, .cc, .cp, .cpp, .cxx, .c++”的,GDB會認(rèn)為是C++程序。而后綴是“.f, .F”的,GDB會認(rèn)為是Fortran程序,還有,后綴為如果是“.s, .S”的會認(rèn)為是匯編語言。也就是說,GDB會根據(jù)你所調(diào)試的程序的語言,來設(shè)置自己的語言環(huán)境,并讓GDB的命令跟著語言環(huán)境的改變而改變。比如一些GDB命令需要用到表達(dá)式或變量時,這些表達(dá)式或變量的語法,完全是根據(jù)當(dāng)前的語言環(huán)境而改變的。例如C/C++中對指針的語法是*p,而在Modula2中則是p^。并且,如果你當(dāng)前的程序是由幾種不同語言一同編譯成的,那到在調(diào)試過程中,GDB也能根據(jù)不同的語言自動地切換語言環(huán)境。這種跟著語言環(huán)境而改變的功能,真是體貼開發(fā)人員的一種設(shè)計。下面是幾個相關(guān)于GDB語言環(huán)境的命令: show language 查看當(dāng)前的語言環(huán)境。如果GDB不能識為你所調(diào)試的編程語言,那么,C語言被認(rèn)為是默認(rèn)的環(huán)境。 info frame 查看當(dāng)前函數(shù)的程序語言。 info source 查看當(dāng)前文件的程序語言。 如果GDB沒有檢測出當(dāng)前的程序語言,那么你也可以手動設(shè)置當(dāng)前的程序語言。使用set language命令即可做到。 當(dāng)set language命令后什么也不跟的話,你可以查看GDB所支持的語言種類: (gdb) set language The currently understood settings are: local or auto Automatic setting based on source file c Use the C language c++ Use the C++ language asm Use the Asm language chill Use the Chill language fortran Use the Fortran language java Use the Java language modula2 Use the Modula2 language pascal Use the Pascal language scheme Use the Scheme language 于是你可以在set language后跟上被列出來的程序語言名,來設(shè)置當(dāng)前的語言環(huán)境。4 使用示例 常用命令file 裝入想要調(diào)試的可執(zhí)行文件. kill 終止正在調(diào)試的程序. list 列出產(chǎn)生執(zhí)行文件的源代碼的一部分. next 執(zhí)行一行源代碼但不進(jìn)入函數(shù)內(nèi)部. step 執(zhí)行一行源代碼而且進(jìn)入函數(shù)內(nèi)部. run 執(zhí)行當(dāng)前被調(diào)試的程序 quit 終止 gdb watch 使你能監(jiān)視一個變量的值而不管它何時被改變. break 在代碼里設(shè)置斷點(diǎn), 這將使程序執(zhí)行到這里時被掛起. make 使你能不退出 gdb 就可以重新產(chǎn)生可執(zhí)行文件. shell 使你能不離開 gdb 就執(zhí)行 UNIX shell 命令. 調(diào)試示例源程序: 1 include 2 3 int func(int n) 4 { 5 int sum=0,i。 6 for(i=0。 in。 i++) 7 { 8 sum+=i。 9 } 10 return sum。 11 } 12 13 14 int main(void) 15 { 16 int i。 17 long result = 0。 18 for(i=1。 i=100。 i++) 19 { 20 result += i。 21 } 22 23 printf(result[1100] = %d \n, result )。 24 printf(result[1250] = %d \n, func(250) )。 25 return 0;26 }編譯生成執(zhí)行文件:(linux下) [wul@cpslinux ~]$ gcc g o test使用GDB調(diào)試:[wul@cpslinux ~]$ gdb test
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1