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

正文內(nèi)容

gdb調(diào)試器使用手冊(cè)-預(yù)覽頁(yè)

 

【正文】 下有的并沒(méi)有 什么大用處。 如果你是使用一個(gè)遠(yuǎn)程終端進(jìn)行遠(yuǎn)程調(diào)試的話,那如果你的終端不支持的話,你將無(wú)法 使用第二個(gè)參數(shù)甚至沒(méi)有core dump。所有的參數(shù)都被按照排列的順序傳給gdb 除非你用了x參數(shù)。 許多選項(xiàng)有縮寫(xiě),用gdb h可以看到。 se 文件名從文件名中讀取符號(hào)并把它作為可執(zhí)行文件。 directory(d) 路徑指定路徑。如果你調(diào)試的程序叫/temp/fred那么map文件就叫 ./,gdb會(huì)認(rèn)識(shí)到這個(gè)文件的存在,從而從這 個(gè)文件中讀取符號(hào),而不是從可執(zhí)行文件中讀取。這會(huì)使開(kāi)始進(jìn)入gdb慢一些,但可以加快以后 的調(diào)試速度。 `nx39。).一般情況下在 這些文件中的命令會(huì)在所有的命令行參數(shù)都被傳給gdb后執(zhí)行。不輸出介紹和版權(quán)信息。在批模式下運(yùn)行。信息 Program exited normally(一般是當(dāng)運(yùn)行的程序正常結(jié)束 時(shí)出現(xiàn))不會(huì)在這種模式中出現(xiàn)。 `f39。 `b BPS39。 退出gdb ============ `quit39。 CTROLD39。CTROLc)不會(huì)導(dǎo)致從gdb中退出,而是結(jié)束任何一個(gè)gdb的命 令,返回gdb的命令輸入模式。 如果你正在用gdb控制一個(gè)被連接的進(jìn)程或設(shè)備,你可以用39。shell39。COMMAND STRING39。否則gdb使用39。工具經(jīng)常在開(kāi)發(fā)環(huán)境中使用,所以你可以不用39。 `make MAKEARGS39。shell make MAKEARGS39。長(zhǎng)度沒(méi)有限制。接受一個(gè)參量表示單步執(zhí)行多少步。另外一些縮寫(xiě)作為一個(gè)命令列出。是指定39。你可以把 這些縮寫(xiě)作為39。但有些命令不能重復(fù)比如象39。list39。這樣你可以方便的瀏覽原代碼和內(nèi)存。命令相似。開(kāi)頭一直到行尾的命令行被看作是注釋。比如 在gdb中: (gdb)info bre TAB(鍵入info bre,后按TAB鍵) gdb能為你完成剩下的輸入。用法與上相同。同樣的 情況對(duì)于命令的參數(shù)。 (gdb)M? gdb會(huì)響鈴并顯示所有的命令。這種方法在調(diào)試C++程序時(shí)特別有用。 括起來(lái)。name(int)39。 符號(hào)。 你可以使用help或h后面不加任何參數(shù)來(lái)得到一個(gè)gdb命令類的列表。status39。 `plete ARGS39。你還可以使用gdb的命令39。來(lái)查詢你程序的 狀態(tài),每個(gè)命令可以查詢一系列的狀態(tài)。i39。 或用info breakpoint列出在程序中設(shè)的斷點(diǎn)。 與39。命令用來(lái)顯示gdb自身的狀態(tài)。show39。set39。命令來(lái)設(shè)置的。 `show copying39。 在gdb下運(yùn)行你的程序 ************************** 當(dāng)你在gdb下運(yùn)行程序時(shí),你必須先為gdb準(zhǔn)備好帶有調(diào)試信息的可執(zhí)行文檔。 * 輸入/輸出:: 設(shè)定你程序的輸入和輸出 * 連接:: 調(diào)試一個(gè)已經(jīng)運(yùn)行的程序 * 結(jié)束子進(jìn)程:: Kill子進(jìn)程 * 進(jìn)程信息:: 附加的進(jìn)程信息 * 線程:: 調(diào)試帶多線程的程序 * 多進(jìn)程:: 調(diào)試帶多進(jìn)程的程序 為調(diào)試準(zhǔn)備帶調(diào)試信息的代碼 =========================== 為了高效的調(diào)試一個(gè)程序,你需要使用編譯器來(lái)產(chǎn)生附帶調(diào)試信息的可執(zhí)行代碼 這些調(diào)試信息存儲(chǔ)在目標(biāo)文件中;描述了變量數(shù)據(jù)類型和函數(shù)聲明,在原文件代碼行 和執(zhí)行代碼之間建立聯(lián)系。 有些c編譯器不支持39。選項(xiàng),那你就有麻煩了,或者有別的方法產(chǎn)生 帶調(diào)試信息的可執(zhí)行代碼,要不就沒(méi)辦法了。O39。,39。 所以有時(shí)你不要使用39。gg39。 開(kāi)運(yùn)行你的程序 ===================== `run39。命令在gdb下啟動(dòng)你的程序。如果你在一個(gè)支持多進(jìn)程的環(huán)境下運(yùn)行你的程 序39。 一些父進(jìn)程設(shè)置的參量可以決定程序的運(yùn)行。run39。來(lái)控制shell。 命令來(lái)設(shè)置專門的環(huán)境變量。 標(biāo)準(zhǔn)輸入/輸出 你的程序一般使用與gdb所用的相似的設(shè)備來(lái)輸入/輸出。或39。這樣gdb會(huì)認(rèn)為調(diào)試程序出錯(cuò)。 如果你的符號(hào)文件的時(shí)間與gdb上一次讀入的不同,gdb會(huì)廢棄原來(lái)的符號(hào)表并重新讀 入。一般你可以在shell 下設(shè)置環(huán)境變量,然后這些變量被所有你所運(yùn)行的程序所共享。環(huán)境變量前加入新的內(nèi)容(39。使用39。 你可以使用串39。的話,它代表你使用39。代替當(dāng)前路徑 `show paths39。如果你不指明變量名,則gdb會(huì)顯示所有的變量名和它們的 內(nèi)容。 設(shè)置某個(gè)環(huán)境變量的值。如果未指定值,則該變量值將被設(shè)為NULL. 看一個(gè)例子: set env USER = foo 告訴一個(gè)linux程序,當(dāng)它下一次運(yùn)行是用戶名將是39。 注意:gdb使用39。run39。cd39。 把gdb的工作目錄設(shè)為DIRECTORY `pwd39。 `info terminal39。 另一個(gè)為你程序指定輸入/輸出的方法是使用39。命令的缺省命 令文件。命令啟動(dòng)的進(jìn)程使用終端39。run39。 當(dāng)你使用39。命令中對(duì)輸入 /輸出進(jìn)行重定向時(shí),只有你當(dāng)前調(diào)試的程序的輸入/輸出被改變了, 并不會(huì)影響到別的程序。(UNIX中使用39。來(lái)查看進(jìn)程) 39。attach39。attach39。 當(dāng)gdb接到39。命令在gdb中啟動(dòng)它一樣。c39。(解除gdb 對(duì)它的控制)在這個(gè)命令執(zhí)行后進(jìn)程將繼續(xù)執(zhí)行。run39。但缺省時(shí),gdb會(huì) 要求你確認(rèn)你是否要退出或執(zhí)行一個(gè)新的進(jìn)程。 在一些操作系統(tǒng)上,一個(gè)程序當(dāng)你在上面加了斷點(diǎn)以后就不能離開(kāi)gdb獨(dú)立運(yùn)行。命令當(dāng)你想重新編譯和連接你的程序時(shí)也很有用。命令時(shí)gdb會(huì)知道你的程序已經(jīng)被改 變了,那么gdb會(huì)重新load新的符號(hào)。的,供檢查進(jìn)程映象。(39。的SVR4系統(tǒng)上有用。 報(bào)告你進(jìn)程所能訪問(wèn)的地址范圍。 報(bào)告有關(guān)進(jìn)程id的信息。這個(gè)報(bào)告還包括停止的原因和收到的 信號(hào)。線程和進(jìn)程精確的定?nbsp。 有自己的寄存器,運(yùn)行時(shí)堆?;蛟S還會(huì)有私有內(nèi)存。一個(gè)用來(lái)在線程之間切換的命令。 * 39。 注意:這些特性不是在所有g(shù)db版本都能使用,歸根結(jié)底要看操作系統(tǒng)是否支持。比如: [New process 35 thread 27] 不過(guò)格式和操作系統(tǒng)有關(guān)。gdb按順序顯示: (gdb設(shè)置) 。的線程表示是當(dāng)前線程。你可以用39。比如: (gdb) thread 2 [Switching to process 35 thread 23] 0x34e5 in sigpause () Switching后的內(nèi)容取決于你的操作系統(tǒng)對(duì)線程標(biāo)識(shí)的定義。 無(wú)論gdb何時(shí)中斷了你的程序(因?yàn)橐粋€(gè)斷點(diǎn)或是一個(gè)信號(hào)),它自動(dòng)選擇信號(hào)或 斷點(diǎn)發(fā)生的線程為當(dāng)前線程。 *參見(jiàn):運(yùn)行和停止多線程程序。當(dāng)一個(gè)程序開(kāi)始 一個(gè)新進(jìn)程時(shí),gdb將繼續(xù)對(duì)父進(jìn)程進(jìn)行調(diào)試,子進(jìn)程將不受影響的運(yùn)行。 然而,如果你要一定要調(diào)試子進(jìn)程的話,這兒有一個(gè)不是很麻煩的折衷的辦法。這在調(diào)試過(guò)程中并不會(huì)引 起程序中很大的麻煩(不過(guò)你要自己注意例外的情況幺:))。attach39。我在調(diào)試程中就試過(guò),好象不一定 能起作用,要看gdb的版本和你所使用的操作系統(tǒng)了。命令。如果你要了解更詳細(xì)的信息,你可以使用39。 `info program39。你可以使用39。在含有異常處理的語(yǔ)言(比如象 c++)中,你還可以在異常發(fā)生的地方設(shè)置斷點(diǎn)。你必 須使用另外一些命令來(lái)設(shè)置觀察點(diǎn)。 設(shè)置斷點(diǎn) ============= 使用39。來(lái)設(shè)置斷點(diǎn)。 此命令用來(lái)在某個(gè)函數(shù)上設(shè)置斷點(diǎn)。 在當(dāng)前程序運(yùn)行到的前幾行或后幾行設(shè)置斷點(diǎn)。程序在運(yùn)行到此行之前停止。 在文件名為FILENAME的原文件的名為FUNCTION的函數(shù)上設(shè)置斷點(diǎn)。 `break39。break39。finish39。這一點(diǎn)在循環(huán)語(yǔ)句中很有用。這意味著 COND的值為真時(shí)程序停止。ARGS的使用同39。 設(shè)置一個(gè)由硬件支持的斷點(diǎn)。break39。因?yàn)?這條命令可以在不改變代碼的情況下設(shè)置斷點(diǎn)。 `thbreak ARGS39。命令。這 個(gè)命令所設(shè)置的斷點(diǎn)需要有硬件支持。這個(gè)命令設(shè) 置的斷點(diǎn)和39。當(dāng)調(diào)試C++程序時(shí)這 個(gè)命令在重載函數(shù)上設(shè)置斷點(diǎn)時(shí)非常有用。 顯示所有的斷點(diǎn)和觀察點(diǎn)的設(shè)置表,有下列一些列 *Breakpoint Numbers*斷點(diǎn)號(hào) *Type*斷點(diǎn)類型(斷點(diǎn)或是觀察點(diǎn)) *Disposition*顯示斷點(diǎn)的狀態(tài)。表示使能,39。 如果斷點(diǎn)是條件斷點(diǎn),此命令還顯示斷點(diǎn)所需要的條件。 此命令還顯示斷點(diǎn)的運(yùn)行信息(被執(zhí)行過(guò)幾次),這個(gè)功能在使用39。ignore39。 gdb允許你在一個(gè)地方設(shè)置多個(gè)斷點(diǎn)。這主要是gdb自己的需要。139。不會(huì)顯示它們。 `maint info breakpoints39。 以下列的含義: `breakpoint39。 `longjmp39。 `longjmp resume39。 `until39。 `finish39。 設(shè)置觀察點(diǎn) ============== 你可以使用觀察點(diǎn)來(lái)停止一個(gè)程序,當(dāng)某個(gè)表達(dá)式的值改變時(shí),觀察點(diǎn)會(huì)將程序 停止。 `watch EXPR39。當(dāng)程序存取某個(gè)地址或某條指令時(shí)(這個(gè)地 址在調(diào)試寄存器中指定),DSU將產(chǎn)生自陷。就是兩個(gè) 39。型斷點(diǎn)。 設(shè)置一個(gè)觀察點(diǎn),當(dāng)EXPR被讀出然后被寫(xiě)入時(shí)程序被暫停。 `info watchpoints39。 *注意:*在多線程的程序中,觀察點(diǎn)的作用很有限,GDB只能觀察在一個(gè)線程中 的表達(dá)式的值如果你確信表達(dá)式只被當(dāng)前線程所存取,那么使用觀察點(diǎn)才有效。而且GDB還可以列出在某個(gè)點(diǎn)上異常處理的所有過(guò)程。 你一樣可以使用39。 * 如果你使用一個(gè)交互的函數(shù),當(dāng)函數(shù)運(yùn)行結(jié)束時(shí),GDB將象普通情況一樣把控制返 回給你。catch39。 要僅僅只在異常處理句柄被喚醒之前設(shè)置斷點(diǎn),你必須了解一些語(yǔ)言的實(shí)現(xiàn)細(xì)節(jié)。這個(gè)函數(shù)的原 型是: /* ADDR is where the exception identifier is stored. ID is the exception identifier. */ void __raise_exception (void **ADDR, void *ID)。 對(duì)于一個(gè)條件斷點(diǎn),由于它取決于ID的值,你可以在你程序中設(shè)置斷點(diǎn),當(dāng)某個(gè)特 別的異常被喚醒。條件只是你所使用的編程語(yǔ)言的一個(gè)布爾表達(dá)式,帶有條件表達(dá)式的斷點(diǎn) 在每次執(zhí)行時(shí)判斷計(jì)算表達(dá)式的值,當(dāng)表達(dá)式值為真時(shí)才掛起程序。 ?nbsp。這一點(diǎn)有時(shí)也是很有用的 比如來(lái)激活一個(gè)顯示程序完成情況的的函數(shù),或使用你自己的打印函數(shù)來(lái)格式化特殊的 數(shù)據(jù)結(jié)構(gòu)。 斷點(diǎn)條件可以在設(shè)置斷點(diǎn)的同時(shí)被設(shè)置。break39。命令來(lái)設(shè)置。if39。 `condition BNUM EXPRESSION39。斷點(diǎn)用39。當(dāng)你使用39。的值判斷表達(dá)式中的符號(hào)在斷點(diǎn)處是否有效,但GDB并不真正計(jì)算表達(dá)式 的值。號(hào)斷點(diǎn)處的條件。ignore count39。如果39。次后被暫停。為39。設(shè)為0. 當(dāng)你使用39。 作為39。continue39。ignore count39。命令來(lái)獲得與用‘ignore count39。的參量作為39。例如:你可以打印一些表達(dá)式的值,或使能其他的斷點(diǎn)。 為斷點(diǎn)號(hào)為BNUM的斷點(diǎn)設(shè)置一個(gè)命令列表。end39。命令后直接跟39。 使用回車來(lái)表示重復(fù)使用命令的特性在39。簡(jiǎn)單的在命令列表 中使用39。命令。 如果你在命令列表中使用了39。但39。echo39。printf39。的值. 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)試的過(guò)程。 使用39。break FUNCITON39。命令 來(lái)指定斷點(diǎn)的確切位置。來(lái)等待你的輸入。[1] all39。String::after39。 line number:860 [4] 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. (gdb
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1