|
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
轉(zhuǎn)載:GDB調(diào)試器使用手冊(cè)(三) |
作者:宇宙飛船 欄目:驅(qū)動(dòng)編程 |
<< GDB調(diào)試器使用手冊(cè)(三) 運(yùn)行GDB(一些詳細(xì)的說明): 前面已經(jīng)提到過如何運(yùn)行GDB了,現(xiàn)在讓我們來看一些更有趣的東西。你可以在運(yùn)行 GDB時(shí)通過許多命令行參數(shù)指定大量的參數(shù)和選項(xiàng),通過這個(gè)你可以在一開始就設(shè)置好 程序運(yùn)行的環(huán)境。 這里將要描述的命令行參數(shù)覆蓋了大多數(shù)的情況,事實(shí)上在一定環(huán)境下有的并沒有 什么大用處。最通常的命令就是使用一個(gè)參數(shù): $gdb <可執(zhí)行文檔名> 你還可以同時(shí)為你的執(zhí)行文件指定一個(gè)core文件: $gdb <可執(zhí)行文件名> core 你也可以為你要執(zhí)行的文件指定一個(gè)進(jìn)程號(hào): $gdb <可執(zhí)行文件名> <進(jìn)程號(hào)> 如:&gdb os 1234將使gdb與進(jìn)程1234相聯(lián)系(attach) 除非你還有一個(gè)文件叫1234的。gdb首先檢查一個(gè)core文件。 如果你是使用一個(gè)遠(yuǎn)程終端進(jìn)行遠(yuǎn)程調(diào)試的話,那如果你的終端不支持的話,你將無法 使用第二個(gè)參數(shù)甚至沒有core dump。如果你覺得開頭的提示信息比較礙眼的話,你可以 用gdb -silent。你還可以用命令行參數(shù)更加詳細(xì)的控制GDB的行為。 打入gdb -help或-h 可以得到這方面的提示。所有的參數(shù)都被按照排列的順序傳給gdb 除非你用了-x參數(shù)。 當(dāng)gdb開始運(yùn)行時(shí),它把任何一個(gè)不帶選項(xiàng)前綴的參數(shù)都當(dāng)作為一個(gè)可執(zhí)行文件或core 文件(或進(jìn)程號(hào))。就象在前面加了-se或-c選項(xiàng)。gdb把第一個(gè)前面沒有選項(xiàng)說明的參數(shù) 看作前面加了-se 選項(xiàng),而第二個(gè)(如果有的話)看作是跟著-c選項(xiàng)后面的。 許多選項(xiàng)有縮寫,用gdb -h可以看到。在gdb中你也可以任意的把選項(xiàng)名掐頭去尾,只 要保證gdb能判斷唯一的一個(gè)參數(shù)就行。 在這里我們說明一些最常用的參數(shù)選項(xiàng) -symbols <文件名>(-s <文件名>)------從<文件名>中讀去符號(hào)。 -exec <文件名>(-e <文件名>)----在合適的時(shí)候執(zhí)行<文件名>來做用正確的數(shù)據(jù)與core dump的作比較。 -se <文件名>------從<文件名>中讀取符號(hào)并把它作為可執(zhí)行文件。 -core <文件名>(-c <文件名>)--指定<文件名>為一個(gè)core dump 文件。 -c <數(shù)字>----連接到進(jìn)程號(hào)為<數(shù)字>,與attach命令相似。 -command <文件名> -x <文件名>-----執(zhí)行g(shù)db命令,在<文件名>指定的文件中存放著一序列的gdb命令,就 象一個(gè)批處理。 -directory(-d) <路徑>---指定路徑。把<路徑>加入到搜索原文件的路徑中。 -m -mapped---- 注意這個(gè)命令不是在所有的系統(tǒng)上都能用。如果你可以通過mmap系統(tǒng)調(diào)用來獲得內(nèi)存 映象文件,你可以用這個(gè)命令來使gdb把你當(dāng)前文件里的符號(hào)寫入一個(gè)文件中,這個(gè)文件 將存放在你的當(dāng)前路徑中。如果你調(diào)試的程序叫/temp/fred那么map文件就叫 ./fred.syms這樣當(dāng)你以后再調(diào)試這個(gè)程序時(shí),gdb會(huì)認(rèn)識(shí)到這個(gè)文件的存在,從而從這 個(gè)文件中讀取符號(hào),而不是從可執(zhí)行文件中讀取。.syms與主機(jī)有關(guān)不能共享。 -r -readnow---馬上從符號(hào)文件中讀取整個(gè)符號(hào)表,而不是使用缺省的。缺省的符號(hào)表是 調(diào)入一部分符號(hào),當(dāng)需要時(shí)再讀入一部分。這會(huì)使開始進(jìn)入gdb慢一些,但可以加快以后 的調(diào)試速度。 -m和-r一般在一起使用來建立.syms文件 接下來再談?wù)勀J降脑O(shè)置(請(qǐng)聽下回分解 :-)) 附:在gdb文檔里使用的調(diào)試?yán)游艺业搅嗽趍inix下有這個(gè)程序,叫m4有興趣的 可以自己去看看模式的選擇 -------------- 現(xiàn)在我們來聊聊gdb運(yùn)行模式的選擇。我們可以用許多模式來運(yùn)行g(shù)db,例如在“批模式” 或“安靜模式”。這些模式都是在gdb運(yùn)行時(shí)在命令行作為選項(xiàng)指定的。 `-nx\" `-n\" 不執(zhí)行任何初始化文件中的命令。(一般初始化文件叫做`.gdbinit\").一般情況下在 這些文件中的命令會(huì)在所有的命令行參數(shù)都被傳給gdb后執(zhí)行。 `-quiet\" `-q\" “安靜模式”。不輸出介紹和版權(quán)信息。這些信息在“批模式”中也被跳過。 `-batch\" “批模式”。在“批模式”下運(yùn)行。當(dāng)在命令文件中的所有命令都被成功的執(zhí)行后 gdb返回狀態(tài)“0”,如果在執(zhí)行過程中出錯(cuò),gdb返回一個(gè)非零值。 “批模式”在把gdb作為一個(gè)過濾器運(yùn)行時(shí)很有用。比如在一臺(tái)遠(yuǎn)程計(jì)算機(jī)上下載且 執(zhí)行一個(gè)程序。信息“ Program exited normally”(一般是當(dāng)運(yùn)行的程序正常結(jié)束 時(shí)出現(xiàn))不會(huì)在這種模式中出現(xiàn)。 `-cd DIRECTORY\" 把DIRECTORY作為gdb的工作目錄,而非當(dāng)前目錄(一般gdb缺省把當(dāng)前目錄作為工作目 錄)。 `-fullname\" `-f\" GNU Emacs 設(shè)置這個(gè)選項(xiàng),當(dāng)我們?cè)贓macs下,把gdb作為它的一個(gè)子進(jìn)程來運(yùn)行時(shí), Emacs告訴gdb按標(biāo)準(zhǔn)輸出完整的文件名和行號(hào),一個(gè)可視的棧內(nèi)容。這個(gè)格式跟在 文件名的后面。行號(hào)和字符重新按列排,Emacs-to-GDB界面使用\\032字符作為一個(gè) 顯示一頁原文件的信號(hào)。 `-b BPS\" 為遠(yuǎn)程調(diào)試設(shè)置波特率。 `-tty DEVICE\" 使用DEVICE來作為你程序的標(biāo)準(zhǔn)輸入輸出。 發(fā)布人:netbull 來自:中國Linux開發(fā)聯(lián)盟 |
|
|
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào) |