GDB是一個(gè)強(qiáng)大的命令行調(diào)試工具。大家知道命令行的強(qiáng)大就是在于,其可以形成執(zhí)行序列,形成腳本。UNⅨ下的軟件全是命令行的,這給程序開發(fā)提代供了極大的便利,命令行軟件的優(yōu)勢(shì)在于,它們可以非常容易的集成在一起,使用幾個(gè)簡(jiǎn)單的已有工具的命令,就可以做出一個(gè)非常強(qiáng)大的功能。
于是UNⅨ下的軟件比Windows下的軟件更能有機(jī)地結(jié)合,各自發(fā)揮各自的長(zhǎng)處,組合成更為強(qiáng)勁的功能。而Windows下的圖形軟件基本上是各自為營(yíng),互相不能調(diào)用,很不利于各種軟件的相互集成。在這里并不是要和Windows做個(gè)什么比較,所謂“寸有所長(zhǎng),尺有所短”,圖形化工具還有時(shí)不如命令行的地方。2100433B
gdb通??梢圆蹲降桨l(fā)送給它的大多數(shù)信號(hào),通過捕捉信號(hào),它就可決定對(duì)于正在運(yùn)行的進(jìn)程要做些什么工作。例如,按CTRL-C將中斷信號(hào)發(fā)送給gdb,通常就會(huì)終止gdb。但是你或許不想中斷gdb,真正的目的是要中斷gdb正在運(yùn)行的程序,因此,gdb要抓住該信號(hào)并停止它正在運(yùn)行的程序,這樣就可以執(zhí)行某些調(diào)試操作。
Handle命令可控制信號(hào)的處理,他有兩個(gè)參數(shù),一個(gè)是信號(hào)名,另一個(gè)是接受到信號(hào)時(shí)該作什么。幾種可能的參數(shù)是:
nostop 接收到信號(hào)時(shí),不要將它發(fā)送給程序,也不要停止程序。
stop 接受到信號(hào)時(shí)停止程序的執(zhí)行,從而允許程序調(diào)試;顯示一條表示已接受到信號(hào)的消息(禁止使用消息除外)
print 接受到信號(hào)時(shí)顯示一條消息
noprint 接受到信號(hào)時(shí)不要顯示消息(而且隱含著不停止程序運(yùn)行)
pass 將信號(hào)發(fā)送給程序,從而允許你的程序去處理它、停止運(yùn)行或采取別的動(dòng)作。
nopass 停止程序運(yùn)行,但不要將信號(hào)發(fā)送給程序。
例如,假定你截獲SIGPIPE信號(hào),以防止正在調(diào)試的程序接受到該信號(hào),而且只要該信號(hào)一到達(dá),就要求該程序停止,并通知你。要完成這一任務(wù),可利用如下命令:
(gdb) handle SIGPIPE stop print
請(qǐng)注意,UNⅨ的信號(hào)名總是采用大寫字母!你可以用信號(hào)編號(hào)替代信號(hào)名如果你的程序要執(zhí)行任何信號(hào)處理操作,就需要能夠測(cè)試其信號(hào)處理程序,為此,就需要一種能將信號(hào)發(fā)送給程序的簡(jiǎn)便方法,這就是signal命令的任務(wù)。該命令的參數(shù)是一個(gè)數(shù)字或者一個(gè)名字,如SIGINT。假定你的程序已將一個(gè)專用的SIGINT(鍵盤輸入,或CTRL-C;信號(hào)2)信號(hào)處理程序設(shè)置成采取某個(gè)清理動(dòng)作,要想測(cè)試該信號(hào)處理程序,你可以設(shè)置一個(gè)斷點(diǎn)并使用如下命令:
(gdb) signal 2
continuing with signal SIGINT⑵
該程序繼續(xù)執(zhí)行,但是立即傳輸該信號(hào),而且處理程序開始運(yùn)行。
有一組專用的gdb變量可以用來檢查和修改計(jì)算機(jī)的通用寄存器,gdb提供了目 前每一臺(tái)計(jì)算機(jī)中實(shí)際使用的4個(gè)寄存器的標(biāo)準(zhǔn)名字:
$pc :程序計(jì)數(shù)器
$fp :幀指針(當(dāng)前堆棧幀)
$sp :棧指針
$ps :處理器狀態(tài)
公積金不能異地使用吧,單位繳存的公積金是可以提取的
風(fēng)罩一般我們都是分為兩種,一種廚房用,一種衛(wèi)生間使用。風(fēng)罩性能測(cè)定主要是阻力和排風(fēng)量的測(cè)定。測(cè)定的目的是為了評(píng)價(jià)排風(fēng)罩在動(dòng)力消耗方面的經(jīng)濟(jì)性,即是否可以用較小的排風(fēng)量、較小的能量損失達(dá)到較好的捕集和控...
羅盤是風(fēng)水操作的重要工具,它的基本作用就是定向。在我們認(rèn)識(shí)風(fēng)水理氣學(xué)問時(shí),首先要學(xué)習(xí)以羅盤定向的基本方法。 羅盤學(xué)名為羅經(jīng),創(chuàng)自軒轅黃帝時(shí)代,后經(jīng)過歷代前賢,按易經(jīng)及河洛原理,參以日月五星七政...
call name 調(diào)用和執(zhí)行一個(gè)函數(shù)
(gdb) call gen_and_sork(1234,1,0)
(gdb) call printf(“abcd”)
=4
finish 結(jié)束執(zhí)行當(dāng)前函數(shù),顯示其返回值(如果有的話)
next 不進(jìn)入的單步執(zhí)行
step 進(jìn)入的單步執(zhí)行如果已經(jīng)進(jìn)入了某函數(shù),而想退出該函數(shù)返回到它的調(diào)用函數(shù)中,可使用命令finish
whatis:識(shí)別數(shù)組或變量的類型
ptype:比whatis的功能更強(qiáng),他可以提供一個(gè)結(jié)構(gòu)的定義
set variable = value:將值賦予變量
print variable = value or p variable = value : 除了顯示一個(gè)變量的值外,還可以用來賦值
1.顯示當(dāng)前gdb的斷點(diǎn)信息:
(gdb) info break
他會(huì)以如下的形式顯示所有的斷點(diǎn)信息:
Num Type Disp Enb Address What
1 breakpoint keep y 0x000028bc in init_random at qsort2.c:155
2 breakpoint keep y 0x0000291c in init_organ at qsort2.c:168
刪除指定的某個(gè)斷點(diǎn):
(gdb) delete breakpoint 1
該命令將會(huì)刪除編號(hào)為1的斷點(diǎn),如果不帶編號(hào)參數(shù),將刪除所有的斷點(diǎn)
(gdb) delete breakpoint
禁止使用某個(gè)斷點(diǎn)
(gdb) disable breakpoint 1
該命令將禁止斷點(diǎn)1,同時(shí)斷點(diǎn)信息的 (Enb)域?qū)⒆優(yōu)?n
允許使用某個(gè)斷點(diǎn)
(gdb) enable breakpoint 1
該命令將允許斷點(diǎn)1,同時(shí)斷點(diǎn)信息的 (Enb)域?qū)⒆優(yōu)?y
清除源文件中某一代碼行上的所有斷點(diǎn)
(gdb)clear number
注:number 為源文件的某個(gè)代碼行的行號(hào)
2.設(shè)置條件斷點(diǎn)
例子:
#includeintmain(void) { inti=0; intsum=0;for(i=1;i<=200;i ) { sum =i; }printf("%d ",sum); return0; }
gdb可以設(shè)置條件斷點(diǎn),也就是只有在條件滿足時(shí),斷點(diǎn)才會(huì)被觸發(fā),命令是“break … if cond”。以上面程序?yàn)槔?
(gdb)start Temporarybreakpoint1at0x4004cc:filea.c,line5. Startingprogram:/data2/home/nanxiao/aTemporarybreakpoint1,main()ata.c:5 5inti=0; (gdb)b10ifi==101 Breakpoint2at0x4004e3:filea.c,line10. (gdb)r Startingprogram:/data2/home/nanxiao/aBreakpoint2,main()ata.c:10 10sum =i; (gdb)psum $1=5050
可以看到設(shè)定斷點(diǎn)只在i的值為101時(shí)觸發(fā),此時(shí)打印sum的值為5050。
break命令(可以簡(jiǎn)寫為b)可以用來在調(diào)試的程序中設(shè)置斷點(diǎn),該命令有如下四種形式:
break line-number 使程序恰好在執(zhí)行給定行之前停止。
break function-name 使程序恰好在進(jìn)入指定的函數(shù)之前停止。
break line-or-function if condition 如果condition(條件)是真,程序到達(dá)指定行或函數(shù)時(shí)停止。
break routine-name 在指定例程的入口處設(shè)置斷點(diǎn)
如果該程序是由很多原文件構(gòu)成的,你可以在各個(gè)原文件中設(shè)置斷點(diǎn),而不是在當(dāng)前的原文件中設(shè)置斷點(diǎn),其方法如下:
(gdb) break filename:line-number
(gdb) break filename:function-name
要想設(shè)置一個(gè)條件斷點(diǎn),可以利用break if命令,如下所示:
(gdb) break line-or-function if expr
例:
(gdb) break 46 if testsize==100
從斷點(diǎn)繼續(xù)運(yùn)行:continue 命令
利用print 命令可以檢查各個(gè)變量的值。
(gdb) print p (p為變量名)
print 是gdb的一個(gè)功能很強(qiáng)的命令,利用它可以顯示被調(diào)試的語言中任何有效的表達(dá)式。表達(dá)式除了包含你程序中的變量外,還可以包含以下內(nèi)容:
對(duì)程序中函數(shù)的調(diào)用
(gdb) print find_entry(1,0)
數(shù)據(jù)結(jié)構(gòu)和其他復(fù)雜對(duì)象
(gdb) print *table_start
={e=reference=’\000’,location=0x0,next=0x0}
值的歷史成分
(gdb)print (為歷史記錄變量,在以后可以直接引用的值)
人為數(shù)組
人為數(shù)組提供了一種去顯示存儲(chǔ)器塊(數(shù)組節(jié)或動(dòng)態(tài)分配的存儲(chǔ)區(qū))內(nèi)容的方法。早期的調(diào)試程序沒有很好的方法將任意的指針換成一個(gè)數(shù)組。就像對(duì)待參數(shù)一樣,讓我們查看內(nèi)存中在變量h后面的10個(gè)整數(shù),一個(gè)動(dòng)態(tài)數(shù)組的語法如下所示:
base@length
因此,要想顯示在h后面的10個(gè)元素,可以使用h@10:
(gdb)print h@10
=(-1,345,23,-234,0,0,0,98,345,10)
whatis命令可以顯示某個(gè)變量的類型
(gdb) whatis p
type = int *
要想運(yùn)行準(zhǔn)備調(diào)試的程序,可使用run命令,在它后面可以跟隨發(fā)給該程序的任何參數(shù),包括標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出說明符(<;和>;)和shell通配符(*、?、[、])在內(nèi)。如果你使用不帶參數(shù)的run命令,gdb就再次使用你給予前一條run命令的參數(shù),這是很有用的。利用set args 命令就可以修改發(fā)送給程序的參數(shù),而使用show args 命令就可以查看其缺省參數(shù)的列表。
(gdb) file a.out //加載被調(diào)試的可執(zhí)行程序文件。
(gdb)set args –b –x
(gdb) show args
(gdb)r //執(zhí)行程序
backtrace命令為堆棧提供向后跟蹤功能。
Backtrace 命令產(chǎn)生一張列表,包含著從最近的過程開始的所有有效過程和調(diào)用這些過程的參數(shù)。
List
(gdb) list line1,line2
查看源代碼
list lineNum 在lineNum的前后源代碼顯示出來
list 列出當(dāng)前行的后面代碼行
list - 列出當(dāng)前行的前面代碼行
list function
set listsize count
設(shè)置顯示代碼的行數(shù)
show listsize
顯示打印代碼的行數(shù)
list first,last
顯示從first到last的源代碼行
2009年12月29日,程序調(diào)試工具 GDB 7.0.1 發(fā)布,新版本修正了7.0版本的一些嚴(yán)重的堆棧溢出bug,這些bug可能導(dǎo)致 GDB 調(diào)試進(jìn)程中斷,修正了在 FreeBSD 和 IRⅨ 系統(tǒng)下無法編譯的問題,增加了對(duì) Thumb2調(diào)試的支持,還有其他一些小bug的修復(fù)。
2010年03月19日,GDB 7.1 發(fā)布,
詳細(xì)改進(jìn)內(nèi)容:多程序調(diào)試的支持;
位置獨(dú)立的可執(zhí)行文件(派)調(diào)試的支持;
新的目標(biāo)(包括一個(gè)模擬器):Xilinx MicroBlaze和瑞薩RX;
Python支持增強(qiáng);
c 支持?jǐn)U展;
新tracepoint功能;
過程記錄的改進(jìn);
遠(yuǎn)程協(xié)議擴(kuò)展。
2010年09月06日 ,GDB 7.2 發(fā)布,
該版本改進(jìn)記錄:
⒈ 支持D語言
⒉ C 改進(jìn),支持參數(shù)依賴查找ADL,靜態(tài)常量類成員和改進(jìn)了用戶自定義操作符的支持
⒊ Python 調(diào)試的改進(jìn),包括斷點(diǎn)、符號(hào)、符號(hào)表、程序空間、線程等可通過命令行進(jìn)行操作
⒋ Furthermore,enhancements were made for tracepoints and for GDBserver.在跟蹤點(diǎn)和GDB程序上有了改善。
⒌ 支持 ARM Symbian 平臺(tái)
⒍ 其他方面的改進(jìn)和bug修復(fù)。
2011年08月26日,GDB 7.3a 發(fā)布,
變化:
1。GDB可以理解線程的名字。
2。這個(gè)命令”線程名稱”(指定一個(gè)名稱)和“線程找到[REGEXP]”(匹配名稱、目標(biāo)ID,或者額外的信息)被添加。
3。Python腳本支持大大增強(qiáng)。
4。在c 的支持,異常處理是提高,模板參數(shù)放在范圍在一個(gè)實(shí)例化時(shí)調(diào)試。
5。線程調(diào)試的核心轉(zhuǎn)儲(chǔ)在GNU / Linux成為可能。
6。最初支持C語言版本的OpenCL。
7。許多其他改進(jìn)。
一般來說,GDB主要幫助你完成下面四個(gè)方面的功能:
1、啟動(dòng)你的程序,可以按照你的自定義的要求隨心所欲的運(yùn)行程序。
2、可讓被調(diào)試的程序在你所指定的調(diào)置的斷點(diǎn)處停住。(斷點(diǎn)可以是條件表達(dá)式)
3、當(dāng)程序被停住時(shí),可以檢查此時(shí)你的程序中所發(fā)生的事。
4、你可以改變你的程序,將一個(gè)BUG產(chǎn)生的影響修正從而測(cè)試其他BUG。
格式:pdf
大小:16KB
頁數(shù): 8頁
評(píng)分: 4.6
/* 1 電梯的特點(diǎn)和結(jié)構(gòu) 電梯是一個(gè)具有特種容載轎廂裝置沿著恒定不變的導(dǎo)軌, 在不同的水平 面間,作間歇運(yùn)動(dòng)的用電力驅(qū)動(dòng)的起重機(jī)械,它適宜于裝置在二層以上的高 層建筑內(nèi),專供上下運(yùn)送人員和貨物之用。 1.1 VVVF 電梯簡(jiǎn)介 VVVF(即交流變壓變頻)電梯控制技術(shù)是國(guó)外八十年代初發(fā)展起來的 電梯領(lǐng)域的最新技術(shù)。 自問世以來,由于其優(yōu)良的性能而得到了廣泛的應(yīng)用, 為現(xiàn)代化電梯工業(yè)的發(fā)展開辟了新的領(lǐng)域。 VVVF 電梯的控制系統(tǒng),是 32位 CPU組成的系統(tǒng)。其主要作用是對(duì)電 梯的內(nèi)選、外呼等指令信號(hào)進(jìn)行實(shí)時(shí)處理,決定電梯的運(yùn)行狀態(tài)、方式以及 電梯啟動(dòng)、制動(dòng)等所有的控制。其先進(jìn)的 LSI 大規(guī)模集成電路技術(shù)和靈活的 控制軟件及高可靠性,使電梯的性能、質(zhì)量和可維護(hù)性大大提高。 VVVF 電梯的拖動(dòng)系統(tǒng), 采用目前國(guó)際流行的先進(jìn)的交流變壓變頻控制 技術(shù),通過內(nèi)設(shè)獨(dú)立的微機(jī)系統(tǒng)對(duì)電機(jī)電壓、
格式:pdf
大小:16KB
頁數(shù): 34頁
評(píng)分: 4.4
,. 目 錄 一 系統(tǒng)概述??????????????? 01 二 系統(tǒng)操作??????????????? 04 三 系統(tǒng)編程???????????????0 9 四 系統(tǒng)配置及選材????????????1 9 五 系統(tǒng)原理圖?????????????? 21 六 系統(tǒng)連線示意圖???????????? 25 七 安裝調(diào)試??????????????? 29 八 系統(tǒng)各部件的安裝說明????????? 31 九 其它事項(xiàng)??????????????? 31 備注:本手冊(cè)中所提及的終端設(shè)備(門口機(jī)、分機(jī)、管理機(jī)、圍墻機(jī)) ,除特別說明外, 主要是以可視系統(tǒng) AB-6A-402 的設(shè)備為主。 ,. 一、系統(tǒng)概述 AB-6A-402 樓宇對(duì)講系統(tǒng)是采用單片機(jī)微電腦控制技術(shù),數(shù)位 總線傳輸技術(shù)而設(shè)計(jì)的小區(qū)聯(lián)網(wǎng)可視對(duì)講系統(tǒng)。系統(tǒng)數(shù)據(jù)傳輸距離 可達(dá) 5000 米(需加中繼器) ,防雷
OpenWrt是在實(shí)現(xiàn)路由器功能方面很受歡迎的開源軟件之一。本書基于OpenWrt,詳細(xì)介紹了智能路由器的開發(fā)。
本書共計(jì)15章,按照認(rèn)識(shí)路由器的順序進(jìn)行編寫,介紹了智能路由器、開發(fā)環(huán)境及編譯分析、OpenWrt包管理系統(tǒng)、OpenWrt配置、軟件開發(fā)、GDB調(diào)試、網(wǎng)絡(luò)基礎(chǔ)知識(shí)、路由器基礎(chǔ)軟件模塊、常用軟件模塊、IP路由、DNS與DHCP、iptables防火墻、UCI防火墻、UPnP、網(wǎng)絡(luò)測(cè)試及分析工具等。豐富的理論知識(shí)和代碼示例可以幫助讀者深入認(rèn)識(shí)和理解OpenWrt技術(shù),并能夠提升開發(fā)水平和開發(fā)效率。
本書適合軟件架構(gòu)師、軟件開發(fā)工程師、軟件測(cè)試工程師以及計(jì)算機(jī)相關(guān)專業(yè)的學(xué)生閱讀。讀者通過閱讀本書,不僅可以掌握OpenWrt技術(shù),還能進(jìn)一步提升自己的軟件開發(fā)水平。
由于光電倍增管增益高和響應(yīng)時(shí)間短,又由于它的輸出電流和入射光子數(shù)成正比,所以它被廣泛使用在天體光度測(cè)量和天體分光光度測(cè)量中。其優(yōu)點(diǎn)是:測(cè)量精度高,可以測(cè)量比較暗弱的天體,還可以測(cè)量天體光度的快速變化。天文測(cè)光中,應(yīng)用較多的是銻銫光陰極的倍增管,如RCA1P21。這種光電倍增管的極大量子效率在4200埃附近,為20%左右。還有一種雙堿光陰極的光電倍增管,如GDB-53。它的信噪比的數(shù)值較RCA1P21大一個(gè)數(shù)量級(jí),暗流很低。為了觀測(cè)近紅外區(qū),常用多堿光陰極和砷化鎵陰極的光電倍增管,后者量子效率最大可達(dá)50%。
普通光電倍增管一次只能測(cè)量一個(gè)信息,即通道數(shù)為1。矩陣。由于通道數(shù)受陽極末端細(xì)金屬絲的限制,只做到上百個(gè)通道。
七波長(zhǎng)高溫計(jì)是MSTC一E16多光譜高溫計(jì)的組成部分之一。圖1給出了七波長(zhǎng)高溫計(jì)的原理方框圖。
卡塞格林望遠(yuǎn)鏡將材料表面成象在入射小孔盤(2)上。人射小孔盤圓周上加工有六個(gè)小孔,最小的有效直徑為0.82毫米。選擇小孔就可以限制被測(cè)表面元的大小。進(jìn)人小孔的輻射經(jīng)鏡(3)準(zhǔn)直,通過干涉濾光片組(4)、減光玻璃`片(5),達(dá)到GDB一239型光電倍增管(6)的陰極靈敏面上。干涉濾光片組(4)裝在轉(zhuǎn)盤的圓周上,轉(zhuǎn)盤用同步電機(jī)驅(qū)動(dòng)。濾光片的峰值波長(zhǎng)為4970埃、5990埃、6510埃、6990埃、5010埃、名990埃、9978埃。減光玻璃片(5)采用與被測(cè)對(duì)象的光譜分布、光電倍增管的光譜靈敏度相匹配的玻璃片,既起到了壓縮光電倍增管陽極輸出的動(dòng)態(tài)范圍,也起到了使光電倍增管運(yùn)行在線性區(qū)的作用。與原論證方案中采用對(duì)數(shù)放大器相比,還提高了系統(tǒng)精度。因?yàn)閷?duì)數(shù)放大器受對(duì)數(shù)元件的影響,目前只能達(dá)到1%的精度。光電倍增管輸出的訊號(hào)經(jīng)前置放大、主放大,最后由電子示波器顯示,照相機(jī)拍照記錄。
這臺(tái)高溫計(jì)的訊號(hào)周期為10毫秒,它隱含著一個(gè)假設(shè),即在10毫秒內(nèi),材料表面溫度和輻射特性是不變的。測(cè)量結(jié)果證明,這個(gè)假設(shè)是正確的。當(dāng)燒蝕處于穩(wěn)態(tài)時(shí),周期間的訊號(hào)變化不大。 2100433B