新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Eclipse的開(kāi)發(fā)環(huán)境中調(diào)試器設(shè)計(jì)與實(shí)現(xiàn)

基于Eclipse的開(kāi)發(fā)環(huán)境中調(diào)試器設(shè)計(jì)與實(shí)現(xiàn)

作者: 時(shí)間:2009-05-22 來(lái)源:網(wǎng)絡(luò) 收藏

摘 要:調(diào)試功能是軟件集成中最重要也是最復(fù)雜的功能之一,調(diào)試功能的完善與否很大程度上決定了一個(gè)集成的優(yōu)劣。作為一個(gè)大型軟件集成的一部分,為了其調(diào)試功能,這里通過(guò)簡(jiǎn)要分析 CDT的調(diào)試機(jī)制,了一個(gè)應(yīng)用于 CDT的嵌入式開(kāi)發(fā)環(huán)境的,其中了一系列調(diào)試功能如斷點(diǎn)設(shè)置、單步執(zhí)行、源代碼搜索以及變量、內(nèi)存和寄存器查看等,為整個(gè)集成開(kāi)發(fā)環(huán)境的實(shí)現(xiàn)打下了基礎(chǔ)。
關(guān)鍵詞:;CDT集成開(kāi)發(fā)環(huán)境;調(diào)試功能;

本文引用地址:http://www.butianyuan.cn/article/152476.htm


O 引 言
在軟件開(kāi)發(fā)過(guò)程中,程序出現(xiàn)錯(cuò)誤在所難免。無(wú)論是普通軟件還是嵌入式軟件,都是開(kāi)發(fā)過(guò)程中不可缺少的工具。
“調(diào)試器”是用于跟蹤程序執(zhí)行情況,快速有效地定位錯(cuò)誤產(chǎn)生的位置,從而找到引起錯(cuò)誤的原因,并將其消除的工具。調(diào)試功能是開(kāi)發(fā)環(huán)境中最重要、也是最復(fù)雜的功能之一,其好壞在很大程度上決定了一個(gè)開(kāi)發(fā)環(huán)境的優(yōu)劣。調(diào)試是一個(gè)從錯(cuò)誤現(xiàn)象出發(fā),通過(guò)某種手段尋找錯(cuò)誤代碼的過(guò)程。調(diào)試的基本原理是在發(fā)現(xiàn)程序運(yùn)行的錯(cuò)誤后,設(shè)法再現(xiàn)程序的執(zhí)行過(guò)程,并獲取程序執(zhí)行中的有關(guān)信息,通過(guò)對(duì)這些信息的分析,逐步找到引起錯(cuò)誤的原因。循環(huán)調(diào)試是最基本的調(diào)試模型;循環(huán)調(diào)試的意思是反復(fù)運(yùn)行程序,利用打印輸出、斷點(diǎn)、單步等技術(shù),觀察程序狀態(tài),控制程序運(yùn)行,逐漸逼近錯(cuò)誤代碼;循環(huán)調(diào)試的前提是程序運(yùn)行是確定的,即對(duì)同樣的輸入,程序的執(zhí)行過(guò)程是相同的。串行程序具有確定性。
調(diào)試的基本行為有觀察、控制與修改。觀察是對(duì)程序的執(zhí)行狀態(tài)進(jìn)行察看,包括處理機(jī)狀態(tài)、進(jìn)程狀態(tài)和數(shù)據(jù)狀態(tài)等;控制即控制程序的執(zhí)行過(guò)程,例如設(shè)斷點(diǎn)、單步執(zhí)行等;修改就是改變程序的運(yùn)行狀態(tài),如修改變量的值、修改指令計(jì)數(shù)器、修改狀態(tài)寄存器等。調(diào)試器在不同程度上支持這3種行為的綜合使用。
經(jīng)典的調(diào)試手段有斷點(diǎn)(Break Pointing)、跟蹤(Tracing)、斷言(Assertion)、分析(Analysis)、打印輸出等。在源程序級(jí)支持圖形化的用戶(hù)界面使得調(diào)試工作更加容易進(jìn)行。對(duì)于實(shí)時(shí)程序或?qū)S脵C(jī)上的程序還常采用模擬手段進(jìn)行調(diào)試。


1 CDT的調(diào)試機(jī)制解析
CDT提供了4個(gè)插件用于實(shí)現(xiàn)調(diào)試功能。這幾個(gè)插件對(duì)于GDB調(diào)試器進(jìn)行操作,并且應(yīng)用GDB提供的MI接口進(jìn)行通信。這四個(gè)插件分別為org.eclipse.cdt.debug.mi.cote插件,用以實(shí)現(xiàn)GDB的MI接口功能及GDB調(diào)用功能;org.eclipse.cdt.debug.mi.ui插件,主要用于實(shí)現(xiàn)GDB的相關(guān)設(shè)置選項(xiàng)界面;org.eclipse.cdt.debug.core插件,用于實(shí)現(xiàn)CDT的調(diào)試模型,包括用串口調(diào)試,用網(wǎng)卡調(diào)試,設(shè)置波特率等功能;org.eclipse.cdt.debug.ui插件,用于實(shí)現(xiàn)界面顯示功能,包括調(diào)試視圖,調(diào)試動(dòng)作等,比如單步調(diào)試,設(shè)置斷點(diǎn),下載,運(yùn)行程序等調(diào)試功能。它們之間的關(guān)系如圖1所示。

標(biāo)準(zhǔn)的調(diào)試模型并不能代表所有的體系結(jié)構(gòu),像嵌入式硬件結(jié)構(gòu)是不同的,有可能是多個(gè)處理器的不同應(yīng)用,也可能包括DSP處理器的應(yīng)用。CDT平臺(tái)支持將非標(biāo)準(zhǔn)的調(diào)試器集成到平臺(tái)的視圖和動(dòng)作中。調(diào)試器圍繞著活動(dòng)調(diào)試上下文進(jìn)行操作,活動(dòng)調(diào)試上下文是在調(diào)試視圖中選擇的一幀或者一個(gè)線程,這個(gè)上下文驅(qū)動(dòng)了源代碼搜索,變量和寄存器顯示,以及動(dòng)作使能等操作。它們之間的關(guān)系如圖2所示。

2 調(diào)試器的詳細(xì)
2.1 斷點(diǎn)設(shè)置
調(diào)試器提供的斷點(diǎn)依賴(lài)于調(diào)試系統(tǒng)所具有的能力,以及應(yīng)用這些能力可以構(gòu)建的集合功能。例如,用行斷點(diǎn)實(shí)現(xiàn)運(yùn)行到行,實(shí)現(xiàn)條件斷點(diǎn)等。
斷點(diǎn)屬性保存在標(biāo)記中,平臺(tái)提供接口IMarker,作為文件中的一般目的標(biāo)記。標(biāo)記是原始數(shù)據(jù)類(lèi)型鍵值對(duì)的存儲(chǔ)。平臺(tái)提供接口IBreakpoint實(shí)現(xiàn)斷點(diǎn)行為。為了實(shí)現(xiàn)復(fù)雜的斷點(diǎn)行為,調(diào)試器需要提供IBreakpoint的實(shí)現(xiàn)。所有的斷點(diǎn)都有一個(gè)相關(guān)的標(biāo)記保存屬性和在編輯器中顯示,提供和斷點(diǎn)類(lèi)型相關(guān)的標(biāo)記擴(kuò)展點(diǎn)。如果需要斷點(diǎn)被保存,需要指定persistent為true。其內(nèi)容如下:

塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理

上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉