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

正文內(nèi)容

gdb使用手冊(文件)

2025-07-14 08:43 上一頁面

下一頁面
 

【正文】 達式print和許多GDB的命令一樣,可以接受一個表達式,GDB會根據(jù)當前的程序運行的數(shù)據(jù)來計算這個表達式,既然是表達式,那么就可以是當前程序運行中的const常量、變量、函數(shù)等內(nèi)容。是一個和數(shù)組有關(guān)的操作符,在后面會有更詳細的說明。如果此時你想查看全局變量的值時,你可以使用“::”操作符:file::variablefunction::variable可以通過這種形式指定你所想查看的變量,是哪個文件中的或是哪個函數(shù)中的。另外,需要注意的是,如果你的程序編譯時開啟了優(yōu)化選項,那么在用GDB調(diào)試被優(yōu)化過的程序時,可能會發(fā)生某些變量不能訪問,或是取值錯誤碼的情況。關(guān)于編譯器的參數(shù),還請查看編譯器的使用說明文檔。例如,你的程序中有這樣的語句:int *array = (int *) malloc (len * sizeof (int))。例如,你想輸出一個整數(shù)的十六進制,或是二進制來查看這個整型變量的中的位的情況。o 按八進制格式顯示變量。f 按浮點數(shù)格式顯示變量。x命令的語法如下所示:x/ n、f、u是可選的參數(shù)。u 表示從當前地址往后請求的字節(jié)數(shù),如果不指定的話,GDB默認是4個bytes。n/f/u三個參數(shù)可以一起使用。display display/ display/ expr是一個表達式,fmt表示顯示的格式,addr表示內(nèi)存地址,當你用display設(shè)定好了一個或多個表達式后,只要你的程序被停下來,GDB會自動顯示你所設(shè)置的這些表達式的值。如果要同時刪除幾個,編號可以用空格分隔,如果要刪除一個范圍內(nèi)的編號,可以用減號表示(如:25)disable display enable display disable和enalbe不刪除自動顯示的設(shè)置,而只是讓其失效和恢復(fù)。set print address set print address on 打開地址輸出,當程序顯示函數(shù)信息時,GDB會顯出函數(shù)的參數(shù)地址。與之相關(guān)的兩個命令如下,我就不再多說了。set print nullstop 如果打開了這個選項,那么當顯示字符串時,遇到結(jié)束符則停止顯示。set print sevenbitstrings 設(shè)置字符顯示,是否按“\nnn”的格式顯示,如果打開,則字符串或字符數(shù)據(jù)按\nnn顯示,如“\065”。typedef enum {Big_tree, Acorn, Seedling} Tree_forms。Bug_forms bug。當打開這個開關(guān)時,執(zhí)行 p foo 命令后,會如下顯示:$1 = {it = Tree, form = {tree = Acorn, bug = Cocoon}}當關(guān)閉這個開關(guān)時,執(zhí)行 p foo 命令后,會如下顯示:$1 = {it = Tree, form = {...}}show print union查看聯(lián)合體數(shù)據(jù)的顯示方式set print object 在C++中,如果一個對象指針指向其派生類,如果打開這個選項,GDB會自動按照虛方法調(diào)用的規(guī)則顯示輸出,如果關(guān)閉這個選項的話,GDB就不管虛函數(shù)表了。默認是on。show print vtbl查看虛函數(shù)顯示格式的選項。這個功能所帶來的好處是,如果你先前輸入了一個比較長的表達式,如果你還想查看這個表達式的值,你可以使用歷史記錄來訪問,省去了重復(fù)輸入。GDB的環(huán)境變量和UNIX一樣,也是以$起頭。show convenience 該命令查看當前所設(shè)置的所有的環(huán)境變量。十、查看寄存器要查看寄存器的值,很簡單,可以使用如下命令:info registers 查看寄存器的情況。你同樣可以使用print命令來訪問寄存器的情況,只需要在寄存器名字前加一個$符號就可以了。如:(gdb) print x=4x=4這個表達式是C/C++的語法,意為把變量x的值修改為4,如果你當前調(diào)試的語言是Pascal,那么你可以使用Pascal的語法:x:=4。這個功能可以由GDB的jump命令來完:jump 指定下一條語句的運行點。注意,jump命令不會改變當前的程序棧中的內(nèi)容,所以,當你從一個函數(shù)跳到另一個函數(shù)時,當函數(shù)運行完返回時進行彈棧操作時必然會發(fā)生錯誤,可能結(jié)果還是非常奇怪的,甚至于產(chǎn)生程序Core Dump。于是,你可以使用“set $pc”來更改跳轉(zhuǎn)執(zhí)行的地址。語法是:signal ,UNIX的系統(tǒng)信號量通常從1到15。你可以使用return命令強制函數(shù)忽略還沒有執(zhí)行的語句并返回。另一個相似的命令也可以完成這一功能——print,print后面可以跟表達式,所以也可以用他來調(diào)用函數(shù),print和call的不同是,如果函數(shù)返回void,call則不顯示,print則顯示函數(shù)返回值,并把該值存入歷史數(shù)據(jù)中。而后綴是“.f, .F”的,GDB會認為是Fortran程序,還有,后綴為如果是“.s, .S”的會認為是匯編語言。并且,如果你當前的程序是由幾種不同語言一同編譯成的,那到在調(diào)試過程中,GDB也能根據(jù)不同的語言自動地切換語言環(huán)境。info frame查看當前函數(shù)的程序語言。當set language命令后什么也不跟的話,你可以查看GDB所支持的語言種類:(gdb) set languageThe currently understood settings are:local or auto Automatic setting based on source filec Use the C languagec++ Use the C++ languageasm Use the Asm languagechill Use the Chill languagefortran Use the Fortran languagejava Use the Java languagemodula2 Use the Modula2 languagepascal Use the Pascal languagescheme Use the Scheme language于是你可以在set language后跟上被列出來的程序語言名,來設(shè)置當前的語言環(huán)境。如果GDB沒有檢測出當前的程序語言,那么你也可以手動設(shè)置當前的程序語言。下面是幾個相關(guān)于GDB語言環(huán)境的命令:show language 查看當前的語言環(huán)境。比如一些GDB命令需要用到表達式或變量時,這些表達式或變量的語法,完全是根據(jù)當前的語言環(huán)境而改變的。一般說來,GDB會根據(jù)你所調(diào)試的程序來確定當然的調(diào)試語言,比如:發(fā)現(xiàn)文件名后綴為“.c”的,GDB會認為是C程序。五、強制調(diào)用函數(shù)call 表達式中可以一是函數(shù),以此達到強制調(diào)用函數(shù)的目的。single命令和shell的kill命令不同,系統(tǒng)的kill命令發(fā)信號給被調(diào)試程序時,是由GDB截獲的,而single命令所發(fā)出一信號則是直接發(fā)給被調(diào)試程序的。如:中斷信號Ctrl+C。熟悉匯編的人都知道,程序運行時,有一個寄存器用于保存當前代碼所在的內(nèi)存地址。表式著下一條運行語句從哪里開始。二、跳轉(zhuǎn)執(zhí)行一般來說,被調(diào)試程序會按照程序代碼的運行順序依次執(zhí)行。改變程序的執(zhí)行———————一旦使用GDB掛上被調(diào)試程序,當程序運行起來后,你可以根據(jù)自己的調(diào)試思路來動態(tài)地在GDB中更改當前被調(diào)試程序的運行線路或是其變量的值,這個強大的功能能夠讓你更好的調(diào)試你的程序,比如,你可以在程序的一次運行中走遍程序的所有分支。(包括浮點寄存器)info registers 查看所指定的寄存器的情況。例如:set $i = 0print bar[$i++]contents于是,當你就不必,print bar[0]contents, print bar[1]contents地輸入命令了。環(huán)境變量沒有類型,你可以給環(huán)境變量定義任一的類型。要定義一個GDB的變量很簡單只需。GDB會以$1, $2, $3 .....這樣的方式為你每一個print命令編上號。set print vtbl 當此選項打開時,GDB將用比較規(guī)整的格式來顯示虛函數(shù)表時。show print object查看對象選項的設(shè)置。}。struct thing {Species it。 set print union 設(shè)置顯示結(jié)構(gòu)體時,是否顯式其內(nèi)的聯(lián)合體數(shù)據(jù)。set print pretty on 如果打開printf pretty這個選項,那么當GDB顯示結(jié)構(gòu)體時會比較漂亮。如果設(shè)置為0,則表示不限制。set print array set print array on 打開數(shù)組顯示,打開后當數(shù)組顯示時,每個元素占一行,如果不打開的話,每個元素則以逗號分隔。GDB會打出一張表格,向你報告當然調(diào)試中設(shè)置了多少個自動顯示設(shè)置,其中包括,設(shè)置的編號,表達式,是否enable。于是當程序停下后,就會出現(xiàn)源代碼和機器指令碼相對應(yīng)的情形,這是一個很有意思的功能。六、自動顯示你可以設(shè)置一些自動顯示的變量,當程序停住時,或是在你單步跟蹤時,這些變量會自動顯示。當我們指定了字節(jié)長度后,GDB會從指內(nèi)存定的內(nèi)存地址開始,讀寫指定字節(jié),并把其當作一個值取出來。f 表示顯示的格式,參見上面。e39。 a 按十六進制格式顯示變量。d 按十進制格式顯示變量。四、輸出格式一般來說,GDB會根據(jù)變量的類型輸出變量的值。比如數(shù)組的一段,或是動態(tài)分配的數(shù)據(jù)的大小。對付這種情況時,需要在編譯程序時關(guān)閉編譯優(yōu)化。39。{} 表示一個指向內(nèi)存地址的類型為type的一個對象。表達式的語法應(yīng)該是當前所調(diào)試的語言的語法,由于C/C++是一種大眾型的語言,所以,本文中的例子都是關(guān)于C/C++的。(gdb) disassemble funcDump of assembler code for function func:0x8048450 : push %ebp0x8048451 : mov %esp,%ebp0x8048453 : sub $0x18,%esp0x8048456 : movl $0x0,0xfffffffc(%ebp)0x804845d : movl $0x1,0xfffffff8(%ebp)0x8048464 : mov 0xfffffff8(%ebp),%eax0x8048467 : cmp 0x8(%ebp),%eax0x804846a : jle 0x8048470 0x804846c : jmp 0x8048480 0x804846e : mov %esi,%esi0x8048470 : mov 0xfffffff8(%ebp),%eax0x8048473 : add %eax,0xfffffffc(%ebp)0x8048476 : incl 0xfffffff8(%ebp)0x8048479 : jmp 0x8048464 0x804847b : nop0x804847c : lea 0x0(%esi,1),%esi0x8048480 : mov 0xfffffffc(%ebp),%edx0x8048483 : mov %edx,%eax0x8048485 : jmp 0x8048487 0x8048487 : mov %ebp,%esp0x8048489 : pop %ebp0x804848a : retEn
點擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1