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

正文內(nèi)容

gdb調(diào)試器使用手冊-資料下載頁

2025-06-26 08:43本頁面
  

【正文】 示斷點(diǎn)的運(yùn)行信息(被執(zhí)行過幾次),這個(gè)功能在使用39。ignore39。 命令時(shí)很有用。你可以39。ignore39。一個(gè)斷點(diǎn)許多次。使用這個(gè)命令可以查看斷點(diǎn) 被執(zhí)行了多少次。這樣可以更快的找到錯(cuò)誤。 gdb允許你在一個(gè)地方設(shè)置多個(gè)斷點(diǎn)。但設(shè)置相同的斷點(diǎn)無疑是弱智的。不過 你可以使用條件斷點(diǎn),這樣就非常有用。 gdb有時(shí)會(huì)自動(dòng)在你的程序中加入斷點(diǎn)。這主要是gdb自己的需要。比如為了正 確的處理C語言中的39。longjmp39。這些內(nèi)部斷點(diǎn)都是負(fù)值,以39。139。開始。39。info breakpoints39。不會(huì)顯示它們。 不過你可以使用命令39。maint info breakpoints39。來查看這些斷點(diǎn)。 `maint info breakpoints39。 使用格式和39。info breakpoints39。相同,顯示所有的斷點(diǎn),無論是你設(shè)置的還是 gdb自動(dòng)設(shè)置的。 以下列的含義: `breakpoint39。 斷點(diǎn),普通斷點(diǎn)。 `watchpoint39。 普通觀察點(diǎn)。 `longjmp39。 內(nèi)部斷點(diǎn),用于處理39。longjmp39。調(diào)用。 `longjmp resume39。 內(nèi)部斷點(diǎn),設(shè)置在39。longjmp39。調(diào)用的目標(biāo)上。 `until39。 39。until39。命令所使用的內(nèi)部斷點(diǎn)。 `finish39。 39。finish39。命令所使用的內(nèi)部斷點(diǎn)。 設(shè)置觀察點(diǎn) ============== 你可以使用觀察點(diǎn)來停止一個(gè)程序,當(dāng)某個(gè)表達(dá)式的值改變時(shí),觀察點(diǎn)會(huì)將程序 停止。而不需要先指定在某個(gè)地方設(shè)置一個(gè)斷點(diǎn)。 由于觀察點(diǎn)的這個(gè)特性,使觀察點(diǎn)的使用時(shí)開銷比較大,但在捕捉錯(cuò)誤時(shí)非常有 用。特別是你不知道你的程序什么地方出了問題時(shí)。 `watch EXPR39。 這個(gè)命令使用EXPR作為表達(dá)式設(shè)置一個(gè)觀察點(diǎn)。GDB將把表達(dá)式加入到程序中 并監(jiān)視程序的運(yùn)行,當(dāng)表達(dá)式的值被改變時(shí)GDB就使程序停止。這個(gè)也可以被用在 SPARClite DSU提供的新的自陷工具中。當(dāng)程序存取某個(gè)地址或某條指令時(shí)(這個(gè)地 址在調(diào)試寄存器中指定),DSU將產(chǎn)生自陷。對于數(shù)據(jù)地址DSU支持39。watch39。命令,然而 硬件斷點(diǎn)寄存器只能存儲(chǔ)兩個(gè)斷點(diǎn)地址,而且斷點(diǎn)的類型必須相同。就是兩個(gè) 39。rwatch39。型斷點(diǎn),或是兩個(gè)39。awatch39。型斷點(diǎn)。 `rwatch EXPR39。 設(shè)置一個(gè)觀察點(diǎn),當(dāng)EXPR被程序讀時(shí),程序被暫停。 `awatch EXPR39。 設(shè)置一個(gè)觀察點(diǎn),當(dāng)EXPR被讀出然后被寫入時(shí)程序被暫停。這個(gè)命令和39。awatch39。 命令合用。 `info watchpoints39。 顯示所設(shè)置的觀察點(diǎn)的列表,和39。info break39。命令相似。 *注意:*在多線程的程序中,觀察點(diǎn)的作用很有限,GDB只能觀察在一個(gè)線程中 的表達(dá)式的值如果你確信表達(dá)式只被當(dāng)前線程所存取,那么使用觀察點(diǎn)才有效。GDB 不能注意一個(gè)非當(dāng)前線程對表達(dá)式值的改變。 斷點(diǎn)和異常 ============== 在一些語言中比如象GNU C++,實(shí)現(xiàn)了異常處理。你可以使用GDB來檢查異常發(fā)生的 原因。而且GDB還可以列出在某個(gè)點(diǎn)上異常處理的所有過程。 `catch EXCEPTIONS39。 你可以使用這個(gè)命令來在一個(gè)被激活的異常處理句柄中設(shè)置斷點(diǎn)。EXCEPTIONS是 一個(gè)你要抓住的異常。 你一樣可以使用39。info catch39。命令來列出活躍的異常處理句柄。 現(xiàn)在GDB中對于異常處理由以下情況不能處理。 * 如果你使用一個(gè)交互的函數(shù),當(dāng)函數(shù)運(yùn)行結(jié)束時(shí),GDB將象普通情況一樣把控制返 回給你。如果在調(diào)用中發(fā)生了異常,這個(gè)函數(shù)將繼續(xù)運(yùn)行直到遇到一個(gè)斷點(diǎn),一個(gè)信號(hào) 或是退出運(yùn)行。 * 你不能手工產(chǎn)生一個(gè)異常( 即異常只能由程序運(yùn)行中產(chǎn)生 ) * 你不能手工設(shè)置一個(gè)異常處理句柄。 有時(shí)39。catch39。命令不一定是調(diào)試異常處理的最好的方法。如果你需要知道異常產(chǎn)生的 確切位置,最好在異常處理句柄被調(diào)用以前設(shè)置一個(gè)斷點(diǎn),這樣你可以檢查棧的內(nèi)容。 如果你在一個(gè)異常處理句柄上設(shè)置斷點(diǎn),那么你就不容易知道異常發(fā)生的位置和原因。 要僅僅只在異常處理句柄被喚醒之前設(shè)置斷點(diǎn),你必須了解一些語言的實(shí)現(xiàn)細(xì)節(jié)。 比如在GNU C++中異常被一個(gè)叫39。__raise_exception39。的庫函數(shù)所調(diào)用。這個(gè)函數(shù)的原 型是: /* ADDR is where the exception identifier is stored. ID is the exception identifier. */ void __raise_exception (void **ADDR, void *ID)。 要使GDB在棧展開之前抓住所有的句柄,你可以在函數(shù)39。__raise_exception39。上設(shè)置斷點(diǎn)。 對于一個(gè)條件斷點(diǎn),由于它取決于ID的值,你可以在你程序中設(shè)置斷點(diǎn),當(dāng)某個(gè)特 別的異常被喚醒。當(dāng)有一系列異常被喚醒時(shí),你可以使用多重條件斷點(diǎn)來停止你的程序。 斷點(diǎn)條件 =========== 最簡單的斷點(diǎn)就是當(dāng)你的程序每次執(zhí)行到的時(shí)候就簡單將程序掛起。你也可以為斷點(diǎn) 設(shè)置條件。條件只是你所使用的編程語言的一個(gè)布爾表達(dá)式,帶有條件表達(dá)式的斷點(diǎn) 在每次執(zhí)行時(shí)判斷計(jì)算表達(dá)式的值,當(dāng)表達(dá)式值為真時(shí)才掛起程序。 這是使用斷言的一中形式,在這種形式中你只有在斷言為真時(shí)才掛起程序。如果 在C語言中你要使斷言為假時(shí)掛起程序則使用:!表達(dá)式。 條件表達(dá)式對觀察點(diǎn)也同樣有效,但你并不需要它,因?yàn)橛^察點(diǎn)本身就計(jì)算一個(gè)表達(dá)式?nbsp。 ?nbsp。 但它也許會(huì)簡單一些。比如只在一個(gè)變量名上設(shè)置觀察點(diǎn)然后設(shè)置一個(gè)條件來測試新的賦 值。 斷點(diǎn)條件可能有副作用(side effects)會(huì)影響程序的運(yùn)行。這一點(diǎn)有時(shí)也是很有用的 比如來激活一個(gè)顯示程序完成情況的的函數(shù),或使用你自己的打印函數(shù)來格式化特殊的 數(shù)據(jù)結(jié)構(gòu)。當(dāng)在同一位置沒有另一個(gè)斷點(diǎn)設(shè)置時(shí),結(jié)果是可預(yù)見的。(在gdb中如果在同一 個(gè)地方使用了一個(gè)斷點(diǎn)和一個(gè)條件斷點(diǎn)則普通斷點(diǎn)可能先被激活。)在條件斷點(diǎn)的應(yīng)用上 有很多技巧。 斷點(diǎn)條件可以在設(shè)置斷點(diǎn)的同時(shí)被設(shè)置。使用39。if39。命令作為39。break39。命令的參數(shù)。斷點(diǎn) 條件也可以在任何時(shí)候使用39。condition39。命令來設(shè)置。39。watch39。命令不能以39。if39。作為參數(shù) 所以使用39。condition39。命令是在觀察點(diǎn)上設(shè)置條件的唯一方法。 `condition BNUM EXPRESSION39。 把39。EXPRESSIN39。作為斷點(diǎn)條件。斷點(diǎn)用39。BNUM39。來指定。在你為BNUM號(hào)斷點(diǎn)設(shè)置了條件 后,只有在條件為真時(shí)程序才被暫停。當(dāng)你使用39。condition39。命令GDB馬上同步的檢查 39。EXPRESSION39。的值判斷表達(dá)式中的符號(hào)在斷點(diǎn)處是否有效,但GDB并不真正計(jì)算表達(dá)式 的值。 `condition BNUM39。 刪除在39。BNUM39。號(hào)斷點(diǎn)處的條件。使之成為一個(gè)普通斷點(diǎn)。 一個(gè)條件斷點(diǎn)的特殊例子是時(shí)一個(gè)程序在執(zhí)行了某句語句若干次后停止。由于這 個(gè)功能非常常用,你可以使用一個(gè)命令來直接設(shè)置它那就是39。ignore count39。每個(gè) 斷點(diǎn)都有39。ignore count39。,缺省是零。如果39。ignore count39。是正的那么你的程序在 運(yùn)行過斷點(diǎn)處39。count39。次后被暫停。 `ignore BNUM COUNT39。 設(shè)置第BNUM號(hào)斷點(diǎn)的39。ignore count39。為39。COUNT39。 如果要讓斷點(diǎn)在下次執(zhí)行到時(shí)就暫停程序,那么把39。COUNT39。設(shè)為0. 當(dāng)你使用39。continue39。命令來繼續(xù)你程序的執(zhí)行時(shí),你可以直接把39。ignore count39。 作為39。continue39。的參數(shù)使用。你只要直接在39。continue39。命令后直接跟要ignore的 次數(shù)就行。 如果一個(gè)斷點(diǎn)同時(shí)有一個(gè)ignore count和一個(gè)條件時(shí),條件不被檢查。只有當(dāng) 39。ignore count39。為零時(shí)GDB才開始檢查條件的真假。 另外你可以用39。condition39。命令來獲得與用‘ignore count39。同樣效果的斷點(diǎn)。用法 是用類似于39。$foo=039。的參量作為39。condition39。命令的參數(shù)(使用一個(gè)不停減量的變量 作為條件表達(dá)式的成員)。 斷點(diǎn)命令列表 ================== 你可以為任一個(gè)斷點(diǎn)或觀察點(diǎn)指定一系列命令,當(dāng)你程序執(zhí)行到斷點(diǎn)時(shí),GDB自動(dòng)執(zhí)行 這些命令。例如:你可以打印一些表達(dá)式的值,或使能其他的斷點(diǎn)。 `mands [BNUM]39。 `... COMMANDLIST ...39。 `end39。 為斷點(diǎn)號(hào)為BNUM的斷點(diǎn)設(shè)置一個(gè)命令列表。這些命令在39。...COMMANDLIST...39。中列 出使用39。end39。命令來表示列表的結(jié)束。 要?jiǎng)h除斷點(diǎn)上設(shè)置的命令序列,你只需在39。mand39。命令后直接跟39。end39。命令就可以 了。 當(dāng)不指定BNUM時(shí),GDB缺省為最近遇到的斷點(diǎn)或是觀察點(diǎn)設(shè)置命令列表。 使用回車來表示重復(fù)使用命令的特性在39。...mand list...39。中不能使用。 你可以使用命令列表中的命令來再次使你的程序進(jìn)入運(yùn)行狀態(tài)。簡單的在命令列表 中使用39。continue39。命令,或39。step39。命令。 在使程序恢復(fù)執(zhí)行的命令后的命令都被忽略。這是因?yàn)橐坏┠愕某绦蛑匦逻\(yùn)行就可 能遇到新的命令列表,那么就應(yīng)該執(zhí)行新的命令。防止了二義。 如果你在命令列表中使用了39。silent39。命令,那么你程序在斷點(diǎn)處停止的信息將不被 顯示。這對于用一個(gè)斷點(diǎn)然后顯示一些信息,接著再繼續(xù)執(zhí)行很有用。但39。silent39。命令 只有在命令列表的開頭有效。 命令39。echo39。,39。output39。和39。printf39。允許你精確的控制顯示信息,這些命令在silent 斷點(diǎn)中很有用。 例如:這個(gè)例子演示了使用斷點(diǎn)命令列表來打印39。x39。的值. break foo if x0 mands silent printf x is %d\n,x cont end 斷點(diǎn)命令列表的一個(gè)應(yīng)用是在遇到一個(gè)buf之后改正數(shù)據(jù)然后繼續(xù)調(diào)試的過程。 使用命令來修改含有錯(cuò)誤值的變量,然后使用39。continue39。命令繼續(xù)程序的運(yùn)行。 使用39。silent39。命令屏蔽輸出: break 403 mands silent set x = y + 4 cont end 斷點(diǎn)菜單 ============== 一些編程語言(比如象C++)允許一個(gè)函數(shù)名被多次使用(重載),以方便應(yīng)用的使用。 當(dāng)一個(gè)函數(shù)名被重載時(shí),39。break FUNCITON39。命令向GDB提供的信息不夠GDB了解你要設(shè)置 斷點(diǎn)的確切位置。如果你了解到這個(gè)問題,你可以使用39。break FUNCITONS(TYPES)39。命令 來指定斷點(diǎn)的確切位置。否則GDB會(huì)提供一個(gè)函數(shù)的選擇的菜單供你選擇。使用提示符 39。39。來等待你的輸入。開始的兩個(gè)選擇一般是39。[0] cancel39。和39。[1] all39。輸入1則在所有 同名函數(shù)上加入斷點(diǎn)。輸入0則退出選擇。 下例為企圖在重載的函數(shù)符號(hào)39。String::after39。上設(shè)置斷點(diǎn)。 (gdb) b String::after [0] cancel [1] all [2] file:。 line number:867 [3] file:。 line number:860 [4] file:。 line number:875 [5] file:。 line number:853 [6] file:。 line number:846 [7] file:。 line number:735 2 4 6 Breakpoint 1 at 0xb26c: file , line 867. Breakpoint 2 at 0xb344: file , line 875. Breakpoint 3 at 0xafcc: file , line 846. Multiple breakpoints were set. Use the delete mand to delete unwanted breakpoints. (gd
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1