999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Eclipse的嵌入式軟件交叉調試

2015-04-12 00:00:00田丹李運喜胡寧麥先根
現代電子技術 2015年6期

摘 "要: 在嵌入式軟件開發過程中調試占據很重要的位置。在詳細分析Eclipse,CDT和GDB的特征后,擴展CDT的調試服務框架及其擴展點,實現在宿主機/目標機的開發模式中使用交叉GDB進行嵌入式軟件的源代碼級交叉調試軟件。該交叉調試軟件使用Eclipse作為集成開發環境,集成并擴展CDT插件,在宿主機端解析、加載帶調試信息的目標文件,啟動交叉GDB處理用戶的調試操作,通過目標機服務器把經過封裝的調試命令發給目標機執行,完成調試功能。該交叉調試方式支持通用的調試操作如設置/刪除斷點、源代碼級或匯編級單步執行、連續執行目標程序、查看/修改目標程序變量、寄存器、內存和查看表達式等,以全軟件的方式解決了嵌入式軟件開發調試比較困難的、代價高的問題,加快了嵌入式軟件開發周期。

關鍵詞: 交叉調試; Eclipse; CDT; GDB; 嵌入式軟件

中圖分類號: TN911?34 " " " " " " " " " 文獻標識碼: A " " " " " " " " " " " " " "文章編號: 1004?373X(2015)06?0086?04

Cross?debugging of Eclipse?based embedded software

TIAN Dan, LI Yun?xi, HU Ning, MAI Xian?gen

(The Third Laboratory of ACTRI, AVIC, Xi’an 710068, China)

Abstract: Based on the detailed analysis of the characteristics of Eclipse, CDT and GDB, the debugging service framework of CDT and its extension point was extended, and the cross debugging of embedded software in the source code level was realized by cross GDB used in development mode of host/target computer. Eclipse is adopted in the cross debugging software as the integrated development environment to integrate and expand the CDT plug?in, parse and load the object file with debugging information at host machine end, start the cross GDB to process the debugging operation of users, and sent the packed debugging command to the target machine through the target server to complete the debugging functions. The cross debugging mode supports universal debugging operations such as breakpoint setting/deletion, single step execution in source code level or assembly level, continuous execution of the target program, check/edition of object program variables, register, memory and expression check. It solved the difficulty in the process of embedded software development and debugging in the whole software mode, reduced its cost, and accelerate the development cycle of embedded software.

Keywords: cross?debugging; Eclipse; CDT; GDB; embedded software

0 "引 "言

開發任何一個軟件都不可避免地存在各種錯誤,通常程序員利用調試器來跟蹤程序執行情況,定位錯誤產生的位置,找到引起錯誤的原因,最終改正錯誤。一般來說,調試器的主要功能是控制目標程序執行過程,查看、修改目標程序對象,包括在目標程序中設置刪除斷點;源代碼級或匯編級單步執行、連續執行目標程序;查看、修改目標程序變量、寄存器和內存等。嵌入式軟件調試通常采用宿主機/目標機模式,借助通用計算機作為宿主機,在宿主機上編輯源代碼,使用交叉編譯器編譯生成目標機的可執行代碼,通過通信介質將目標代碼下載到目標機上運行,使用交叉調試器進行跟蹤調試,其一般通用結構見圖1。

lt;E:\王芳\現代電子技術201506\現代電子技術15年38卷第6期\Image\44T1.tifgt;

圖1 交叉調試結構

國外計算機業在嵌入式軟件調試領域發展很快,開發出多款功能強大、支持多種目標機的交叉調試器。目前國內的嵌入式系統發展迅速,對嵌入式軟件的開發環境也提出了新的要求,因此在此著手進行嵌入式軟件的源代碼級交叉調試器的設計與實現。

1 "Eclipse、CDT和GDB

Eclipse項目是由IBM、Borland、Rational等多家軟件工具開發公司參與研究和推廣的新一代通用集成開發環境,核心是動態發現插件(Plug?in)的體系結構[1]。微內核形式的平臺核心負責處理基本環境的后臺工作,基于功能的單個插件專注于執行特定的任務。通過集成來自不同供貨商的插件,Eclipse可以不斷擴展,實現各種不同的功能:支持C/C++開發的CDT(C/C++ Development Toolkit)插件;支持Java開發調試的JDT插件;支持XML開發的WST插件;支持遠程系統開發的RSE(Remote System Explorer)插件;支持版本管理的CVS插件;支持模型驅動開發的GEF、EMF插件等。Eclipse當前已經成為主流的嵌入式軟件集成開發環境基礎平臺[2],其中集成有嵌入式軟件開發調試過程中的各種工具,如目標機應用程序項目管理、源代碼編輯、項目構建、交叉運行、交叉調試、交叉測試、固化、遠程系統查詢瀏覽等[3]。

GDB是GNU提供的開放源代碼的源代碼級調試工具,可以用于C/C++等程序的跟蹤調試[4]。在嵌人式系統開發軟件中, 開發人員能夠使用GDB以遠程調試的方式單步執行目標平臺上的程序代碼、設置斷點、查看內存, 和目標平臺交換信息。GDB同目標機交換信息的能力相當強大, 勝過絕大多數的商業調試工具, 甚至可以與某些低端仿真器媲美。同樣, 與打印輸出等傳統的軟件調試手段相比, GDB遠程調試的動態、實時、方便等方面的優勢非常明顯。

CDT是在Eclipse平臺上支持C/C++開發的工具插件,支持創建、編輯、資源管理、編譯、運行和調試本地C/C++程序[5]。CDT由一組相關聯插件組成,每個插件都作為一個獨立自主的項目運行。

CDT的本地調試大致分為3步:

(1) 初始化運行環境。CDT需要初始化運行環境、設置被調試的目標文件、設置調試入口、確定源代碼位置和查找規則、設置和GDB調試器的通信鏈接參數等。啟動調試會話后, CDT創建并初始化調試對象、線程信息、斷點信息、寄存器信息、內存信息、源代碼信息等;

(2) 啟動GDB調試器。CDT以圖形化的方式提供調試功能, 但底層仍然采用傳統調試器GDB。CDT 使用MI接口啟動GDB,每一條發給GDB的調試命令都會有返回信息。CDT啟動GDB輸出流監聽線程,該線程負責通過MI協議與GDB通信并完成事件觸發任務。CDT中圖形界面的變化是通過接收并解析這些信息而產生的;

(3) 開始調試。用戶發出調試命令后,CDT首先檢測被調試對象的狀態, 如此時對象已經運行則拋出異常(如被掛起), 并向GDB發出continue命令;如被終止或沒有運行, 則向GDB發出run命令,運行調試對象, 直到觸發事件。當有事件被觸發, CDT將收集事件發生時的目標機現場,根據該現場決定被調試的線程、斷點位置、源代碼位置以及目標機對象信息, 并反饋給用戶,用戶可執行下一條的調試命令,CDT通過MI 接口將具體的調試命令傳遞給GDB執行,依次循環直至完成本次調試。

CDT的調試支持部分包括CDT調試核心、CDT調試UI、CDT調試MI和 CDT調試啟動等插件,通過擴展上述插件,可啟動交叉調試器GDB,實現對遠程目標機程序的源代碼級交叉調試功能。

根據Eclipse、CDT以及GDB的以上功能特性,以Eclipse為交叉調試環境基礎平臺,調用CDT調試服務框架,擴展調試相關功能,將嵌入式交叉工具鏈無縫集成到交叉調試環境基礎平臺中。

2 交叉調試組成結構

交叉調試由CDT交叉調試支持、目標機服務器通信支持和交叉GDB,如圖2所示。CDT交叉調試擴展CDT的調試擴展服務,調用交叉GDB,提供遠程交叉調試支持。

lt;E:\王芳\現代電子技術201506\現代電子技術15年38卷第6期\Image\44T2.tifgt;

圖2 交叉調試組成圖

2.1 CDT交叉調試

CDT調試覆蓋基本的調試工具,包括調試啟動、調試視圖、斷點視圖、表達式視圖、變量視圖、反匯編視圖、內存視圖和源碼編輯器等。調試啟動管理調試啟動配置。調試視圖管理調試會話,顯示調試棧幀,提供調試操作。斷點視圖提供調試斷點管理功能,包括設置、刪除、關閉和打開斷點等操作。變量視圖提供局部變量和全局變量操作功能。寄存器視圖提供寄存器操作功能,在多核條件下,支持查看不同核上的寄存器。內存視圖提供內存操作。表達式視圖提供表達式求值功能。反匯編視圖支持反匯編調試。源碼編輯器提供源代碼級調試。

交叉調試擴展CDT,實現兩個新的插件:cross.debug.core和cross.debug.ui。cross.debug.core需要擴展命令工廠擴展點,實現交叉調試命令集;擴展調試器擴展點,啟動交叉調試GDB;實現符號表管理器,提供脫離GDB的符號表查詢接口,在GDB沒有啟動的情況下(如加載時)查詢符號地址;擴展調試啟動器擴展點,鏈接目標機服務器,根據調試類型加載目標文件。cross.debug.ui插件擴展調試運行類型擴展點, 為支持的嵌入式操作系統添加專有的調試運行類型組,與該嵌入式操作系統相關的調試啟動歸屬于這個組;擴展調試器配置頁擴展點,配置調試參數如選擇目標機服務器、調試初始入口和加載配置等。

2.2 目標機服務器通信支持

目標機服務器用于管理宿主機與目標機之間的通信鏈接,是嵌入式軟件集成開發環境與目標機的通信中心。目標機服務器可以管理多個目標機,同時向多個目標機發送數據,可以同時接收多個目標機的數據。目標機服務器將開發環境中所有和目標機通信相關統一管理,并為開發工 具提供目標機通信接口。

目標機服務器提供目標機管理、數據傳輸、目標機通信、目標機通信連接檢查、命令管理、目標機事件管理、RSP數據處理、符號表管理、日志記錄等功能。

2.3 交叉GDB

交叉GDB提供不同體系結構目標機系統的遠程調試支持,在調試啟動配置中可以選擇不同版本的交叉GDB。GDB和目標機服務器之間接口是MI協議。目標機服務器把MI協議命令轉化為RSP協議,發給目標機代理處理。

3 交叉調試工作流程

交叉調試設計為遠程調試模式,與CDT本地調試有所不同,交叉調試需要與待目標機的體系結構相符的交叉調試GDB;交叉調試需要和遠程目標機通信,這由目標機服務器負責;調試命令由GDB發給目標機服務器,返回信息由目標機服務器傳給GDB,再由CDT界面顯示。

交叉調試基本步驟為:

(1) 初始化目標機系統,建立宿主機與待調試目標機之間的通信通道,加載運行被調試的目標文件到目標機中;

(2) 啟動交叉調試器。確定宿主機中和目標機上所運行程序對應的包含調試信息的目標文件,然后啟動宿主機上和目標機體系結構匹配的交叉調試器GDB,建立該交叉調試器和目標機服務器的通信鏈接,以后的調試命令通過該通信鏈接向目標機發送命令并接收目標機返回的信息;

(3) 初始化交叉調試運行環境,建立交叉調試會話。啟動交叉調試會話后,CDT創建并初始化調試對象、 遠程目標機中的線程信息、斷點信息、寄存器信息、內存信息、源代碼信息等;

(4) 開始交叉調試。該過程與CDT的本地調試步驟(3)類似,GDB收到MI調試命令后,轉換為遠程串行協議(Remote Serial Protocol,RSP)命令,發給目標機服務器;目標機服務器將RSP命令發送給目標機執行,并接收目標機返回的執行結果信息和目標機程序執行中觸發事件,送給GDB處理;GDB收到目標機報告的數據,轉換為MI命令回復交給CDT;CDT根據MI命令回復確定該調試命令的執行結果。

4 關鍵技術

4.1 符號表管理技術

符號表是源碼級調試的必要功能。在本地調試過程中,由GDB管理符號表并提供查詢接口。交叉調試時,可能GDB尚未啟動,或者不具備查詢狀態,不能從GDB獲得符號信息,需要調用脫離GCC工具鏈和GDB的符號表解析程序。解析程序包含4部分:Symbol類、Section類、ElfHeaher類、Elf類和符號表管理類SymbolManager。

Symbol類描述符號相關信息,包括符號名字、符號地址、符號類型以及符號所屬段等數據。

Section類描述段相關信息,包括段名字、段類型、段屬性、裝入地址和段偏移及大小等數據。

ElfHeaher類描述Elf文件頭信息,包括文件類型、目標體系類型、處理器標識、文件入口地址、Elf頭偏移及大小、段表信息等數據。

Elf類解析帶有調試信息的目標文件信息,創建相關信息對象:一個ElfHeader對象、一組Section對象和一組Symbol對象。

SymbolManager類提供設置符號文件、根據源代碼行號查地址、根據地址查源代碼行號、根據地址查符號、根據符號查地址以及獲得指定段等接口。

4.2 CDT調試擴展技術

交叉調試對CDT調試的擴展主要是在建立和目標機服務器的通信鏈接,啟動并初始化支持交叉調試的GDB方面,主要包括以下方面:

(1) 擴展交叉調試命令集實現CrossCommandFactory。CDT默認的調試命令集包含GDB的MI命令和部分CLI命令,需要加入新的命令如增加符號文件、根據源代碼行號查地址命令、根據地址查符號以及根據符號查地址等命令;

(2) 擴展交叉調試器實現CrossDebugger。啟動交叉調試器需要找到符合目標機體系結構的GDB,添加符號表文件,把CDT建立的本地調試對象Target轉換為交叉調試對象CrossTarget以記錄遠程目標機的調試上下文,維護調試會話使用的目標機服務器鏈接等參數;

(3) 擴展交叉調試器配置實現CrossDebuggerPage。在調試啟動配置中添加交叉調試需要的參數配置界面;

(4) 擴展交叉調試器啟動代理實現CrossLaunchDelegate。根據配置鏈接目標機服務器指定要調試的目標機,加載待調試程序到目標機;還有可能需要重定位目標文件、設置所調試程序參數;根據配置啟動交叉調試器,創建調試會話,初始化源代碼查找器。

5 結 "語

本文主要研究以開源的Eclipse和CDT 項目為依托,在分析Eclipse、CDT和GDB的功能特性的基礎上,根據CDT的擴展服務,實現在宿主機上利用交叉調試GDB,調試遠程目標機程序的源代碼級交叉調試功能。該交叉調試支持通用的調試操作如設置刪除斷點、源代碼級或匯編級單步執行、連續執行目標程序、查看/修改目標程序變量、寄存器、內存和查看表達式等。進一步,在嵌入式軟件開發階段,開發者必須要對目標系統運行狀態具有完全的觀察和控制能力, 例如硬件的各種寄存器、內存空間使用情況、CPU利用率, 操作系統的信號量、消息隊列、任務、堆棧等對象和系統任務之間的通信情況、任務的執行軌跡,這將是進一步的工作。

參考文獻

[1] Anon. Fortify audit workbench user guide [EB/OL]. [2012?11?17]. http://www. wenku.baidu.com/link?u.

[2] 魏楚元,李陶深,張增芳.Eclipse:基于插件的下一代通用集成開發環境[J].計算機應用與軟件,2005,22(6):38?40.

[3] 劉芳,臧威.基于Eclipse平臺的嵌入式交叉調試環境MRTOS[J].電子科技,2013,26(5):18?21.

[4] Free Software Foundation. GDB user manual [EB/OL] . (2006?12?13) [2007?01?09]. http://sourceware. org /gdb/current/onlinedocs/gdb?toc.html.

[5] Anon. Eclipse IDE C/C++ development user guide [EB/OL]. [2013?11?28]. http://www. www.docin.com...570.html.

[6] 王興杰,李允,江浩,等.基于Linμx的嵌入式交叉開發技術[J].計算機應用研究,2008(1):206?208,214.

主站蜘蛛池模板: 国产性生大片免费观看性欧美| 色亚洲成人| 色屁屁一区二区三区视频国产| 美女啪啪无遮挡| 久久精品只有这里有| 欧美精品v| 真实国产精品vr专区| 99久久精品国产自免费| 日韩 欧美 国产 精品 综合| 久99久热只有精品国产15| 久草热视频在线| 欧美第九页| 欧美在线视频不卡第一页| AV熟女乱| 国产成人8x视频一区二区| 欧美日韩精品一区二区在线线 | 天天躁夜夜躁狠狠躁躁88| 狠狠色丁香婷婷| 中日韩欧亚无码视频| 无码一区二区三区视频在线播放| 天天色天天综合| 无码中文字幕精品推荐| 国产亚洲欧美在线视频| 成人亚洲视频| 手机永久AV在线播放| 91成人在线观看视频| 国产成人福利在线视老湿机| 欧美日韩国产系列在线观看| 日本a∨在线观看| 男女男免费视频网站国产| 国产精品极品美女自在线网站| 成人亚洲天堂| 欧美黄网站免费观看| 国产人碰人摸人爱免费视频| 国产精品分类视频分类一区| 欧美日韩一区二区在线免费观看 | 亚洲午夜18| 人妻丝袜无码视频| 日韩高清欧美| 国产99视频精品免费视频7| 国产精品污视频| 亚洲综合天堂网| 婷婷中文在线| 中文字幕在线看| 一本久道久久综合多人| 国产亚洲视频免费播放| 国产成年无码AⅤ片在线| 婷婷色丁香综合激情| 久久99国产综合精品1| 国产亚洲精品97在线观看| 国产激情无码一区二区三区免费| 国产精品手机视频一区二区| 91精品国产一区| 亚洲三级网站| 最新亚洲av女人的天堂| 黄色网在线| 毛片网站观看| 国产亚洲欧美另类一区二区| 精品無碼一區在線觀看 | 亚洲成人福利网站| 婷婷色在线视频| 日本免费高清一区| 亚洲毛片网站| 91在线播放国产| 国产成人综合在线视频| 91免费国产高清观看| 伊人AV天堂| 国产精品一区在线麻豆| 国产香蕉在线| WWW丫丫国产成人精品| 欧美日韩一区二区三| 日韩毛片基地| 免费看美女毛片| 欧美性爱精品一区二区三区| 国内精自线i品一区202| 国产一区二区精品高清在线观看| 国产高潮视频在线观看| 欧美翘臀一区二区三区| 久久久久亚洲av成人网人人软件| 欧美一级片在线| 国产亚洲精久久久久久久91| 又粗又大又爽又紧免费视频|