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

基于Eclipse平臺的嵌入式遠程調試軟件實現

2014-08-07 12:08:04康慕寧
微處理機 2014年3期
關鍵詞:嵌入式調試

王 爽,康慕寧

(西北工業大學計算機學院,西安710129)

基于Eclipse平臺的嵌入式遠程調試軟件實現

王 爽,康慕寧

(西北工業大學計算機學院,西安710129)

傳統嵌入式系統大多采用命令行打印的方式進行開發調試,導致開發周期延長。針對這個問題,基于Eclipse平臺和CDT插件設計并實現了一套可視化的嵌入式遠程調試軟件。主機端的調試總控通過MI接口封裝通用調試器GDB,按照DWARF調試信息格式提取目標文件中的調試信息,并通過RSP協議發送調試命令,目標機端的調試代理負責接收并處理調試命令。著重分析了調試總控的設計和調試代理的實現要點,最終實現了對MPC8270上目標程序的源碼級遠程調試。

嵌入式;調試代理;遠程調試;GDB調試器

1 引 言

隨著嵌入式軟件開發規模的不斷擴大,如何高效地對嵌入式軟件進行調試成為系統開發中的一個難題。由于嵌入式系統本身的計算能力、存儲能力、外設資源都非常有限,在嵌入式MCU上運行一個調試器是不太現實的。在很長一段時間內,開發人員大都使用串口打印輸出到命令行的方式進行調試,這種調試手段嚴重延長了軟件的開發周期,在主機端上的IDE進行遠程調試逐漸成為一個發展趨勢。遠程調試采用主機/目標機交叉的方式進行,調試器運行在主機端,被調試程序運行在目標機端,主機端的調試器通過串口或網絡與目標機通信,控制目標機上被調試程序的運行,實現對目標文件的調試。

GNU開源組織發布的GDB(GNU Debugger)是一個強大的通用程序調試工具[1],它對本地調試和遠程調試都提供支持。GDB支持CLI(Command Line Interface)和MI(Machine Interface)兩種外部調試工具接口。Eclipse是利用MI方法支持C語言源碼級調試最好的開源工具[2],故在Eclipse平臺的基礎上使用CDT插件開發遠程調試器圖形前端,利用GDB/MI接口封裝GDB,使圖形前端能夠和GDB相互通信,在目標機端搭建調試代理模塊,最終構建了一個可視化的嵌入式遠程調試軟件,不僅提高了開發效率,而且減少了軟件成本。

2 遠程調試軟件設計原理

嵌入式遠程調試軟件主要由主機端的調試器和目標機端的調試代理組成,主機調試器與調試代理通過遠程調試通信協議RSP進行通信[3]。主機調試器按照DWARF調試信息格式提取目標文件中的調試信息,根據RSP協議把要發送的調試命令封裝成數據包,通過通信接口如網口或串口發送給調試代理以及接收調試代理發送的調試信息數據包,并且在Eclipse圖形界面上顯示相應的調試信息。調試代理接收并解析用戶的遠程調試命令,根據調試命令控制被調試程序的運行,并且把調試信息封裝成數據包發送給主機調試器。

CDT插件為Eclipse提供了C/C++程序的編輯、編譯、運行及本地調試功能[4]。為滿足嵌入式遠程調試的需求,需要對Eclipse的調試模塊進行功能擴展,使擴展后的CDT插件能夠調用GDB對目標機上的被調試程序進行遠程調試。主要擴展的部分如下:①調試器遠程連接部分。遠程連接目標機,首先需要配置遠程調試信息,如:連接方式、目標機IP地址、端口號等,然后遠程調試器利用配置信息連接調試代理,連接成功則建立調試會話,若遇異常則退出。②遠程調試信息處理部分。根據遠程調試時返回的調試信息格式進行信息解析、提取和存儲,根據視圖要求實時顯示調試信息。③調試管理部分。接收圖形界面中的配置信息,負責發送調試信息及調試命令至GDB。遠程調試軟件結構如圖1所示。

圖1 遠程調試軟件結構

3 遠程調試軟件關鍵技術

3.1 調試信息提取

調試信息是GCC編譯器在編譯時從源文件中收集的信息,包括文件名、函數名、函數參數、函數入口地址、變量名、變量類型、行號以及對應的地址等等,然后按照DWARF(Debugging With Attributed Record Formats)調試信息格式寫入到目標文件中[5]。遠程調試器在工作時能夠從目標文件中提取調試信息,建立源代碼和目標文件之間的對應關系。

調試信息主要分布在ELF文件中的以.debug_ *開頭的節,其中.debug_info節和.debug_line節中的調試信息是關鍵信息,.debug_info節保存的內容是文件名信息、函數信息、變量信息以及類型信息等,.debug_line節保存的是機器指令地址和源文件行的對應信息。

DWARF最基本的描述實體為DIE(Debugging Information Entry)。每個DIE都有自己的標簽(包含類型和一系列屬性),類型以DW_TAG為前綴標記,屬性以DW_AT為前綴標記。DIE以兒子兄弟樹的結構存儲,屬性指向其他的DIE。DIE類型有:DW_TAG_compile_unit、DW_TAG_subprogram、DW_ TAG_formal_parameter、DW_TAG_variable、DW_TAG _pointer_type等。圖2是.debug_info節的樹形結構圖。

圖2 debug_info的樹形結構

調試信息處理模塊首先通過ELF文件頭計算出.debug_info節和.debug_line節在目標文件中的位置,然后利用開源的libdwarf庫(提供大量的API函數接口)對這兩個節中的二進制碼進行解析[6],從中提取調試信息。libdwarf庫對每個DIE進行解析,根據DIE的類型分別進行處理,最后生成的調試信息分別存儲在各自定義的結構體中。在所有的調試信息中,源程序行號與目標文件機器指令地址的對應關系是最重要的調試信息。該模塊采用STL的Map映射模板類來實現這種對應關系,其定義如下:Map(UINT,UINT)mapAddrToFileLine,既可以完成機器指令地址到行號的對應,又可以完成行號到機器指令地址的對應。

3.2 調試代理設計

調試代理作為目標機上運行的一段程序,接收和處理主機調試器的調試請求,并向主機調試器反饋調試信息[7]。為了使調試代理不占用過多的目標機資源,同時提高調試代理的執行效率,目標機端的調試代理采用模塊化、層次化設計,調試代理的基本結構如圖3所示。

調試代理根據遠程調試軟件的功能分為以下幾個模塊:

圖3 調試代理結構

(1)異常處理模塊:當被調試程序遇到異常暫停執行時,調試代理獲得CPU的控制權,處理完異常之后調試代理交出CPU控制權,目標文件繼續運行。

(2)功能執行模塊:主要負責執行主機調試器發送的調試命令,包括內存值讀寫、寄存器值讀寫、斷點設置、單步執行等命令,將執行結果發送給調試通信模塊。

(3)調試通信模塊:根據調試通信協議RSP對發送過來的調試命令進行解析和封裝,并且對數據進行驗證。

(4)通信接口模塊:主要負責與主機調試器的通信,接收調試命令,并返回調試結果。為了用戶方便使用,提供多種通信接口,如串口、USB、網口等,通信接口模塊中有相應的接口驅動模塊,用來屏蔽不同的通信方式。

(5)功能擴展模塊:為以后擴展調試代理功能提供方便。

根據上述要求編寫調試代理程序,下面詳細介紹一下調試代理的實現過程:

(1)首先把主機端的調試命令預先注冊到異常向量表中,每個調試命令都對應唯一的標識、處理函數指針等[8]。之后調試代理等待主機端的調試命令,主機調試器發出調試命令后,系統會將CPSR(當前程序狀態寄存器)的值自動修改,從而調試代理知道命令類型。獲得調試命令后,調試代理首先解析出標識號,然后查表獲取處理函數的入口地址,保存現場,調用處理函數。

(2)進入異常處理函數后,調試代理通過通信接口接收主機調試器發送的命令,主要包括調試過程中的斷點設置,單步執行,寄存器值讀寫,內存值讀寫,變量值讀寫,終止等功能。調試代理獲得某個命令后,便執行相應的調試動作。執行單步命令之后恢復異常之前的寄存器值,使目標文件從異常處繼續運行。

(3)調用調試通信模塊,調試通信模塊按照遠程調試信息規定的格式對數據進行解析、封裝,接收來自通信接口的數據包,解析出調試命令,通過功能執行模塊進行相應的處理。執行完調試命令后,將命令的執行結果封裝成數據包,再通過RSP通信協議發送給主機調試器。

3.3 主要調試功能設計

遠程調試軟件提供的調試功能有:連接目標機、斷點設置與刪除、單步、變量查看與修改、寄存器讀寫、內存讀寫等。斷點設置和變量查看是調試器控制程序執行的基本手段。下面詳細介紹斷點設置和變量查看的設計。

(1)斷點設置

斷點從實現方式上可以分為兩種:硬件斷點和軟件斷點。硬件斷點是依賴硬件實現的,具有一定的局限性;而軟件斷點具有通用性。軟件斷點是將設置斷點處原有的指令替換為產生異常的指令,當目標機運行到此斷點處時,主機調試器會捕獲到異常,目標機暫停執行,由調試代理接管對目標文件的控制。

斷點設置的實現過程如下:首先,在源代碼中的某一行處設置斷點時,把斷點所在行的信息保存在自定義的雙向鏈表結構中;其次,根據當前的源文件名和行號,通過查詢目標文件的符號表獲得源文件名加行號所對應的目標代碼地址;第三,給目標機發送寫內存指令,在斷點處寫上異常指令;第四,中斷產生后,恢復預先保存的指令代碼,此時調試者可以通過調試命令查看目標文件的上下文信息。

(2)變量操作

調試器的變量操作包括局部變量和全局變量的查看和修改,即從內存中讀取數據或者把數據寫到相應的內存單元中。全局變量存放在數據區,可以直接訪問其內存地址;而局部變量存放在堆棧區,其地址是變化的,因此需要對目標文件進行解析,找到變量的內存地址。

變量在DWARF調試規范中的標簽是DW_TAG_variable。DW_TAG_variable的屬性包括變量名DW_ AT_name、源文件名DW_AT_decl_file、行號DW_AT_ decl_line、變量類型DW_AT_type、存放位置DW_AT_ location等。全局變量用DW_AT_external屬性標識[9],其DW_AT_location屬性內容為操作碼DW_OP _addr,操作數是全局變量的內存地址。局部變量的DW_AT_location屬性內容為操作碼DW_OP_fbreg,操作數是相對所在函數的偏移量,即局部變量存儲在以其所在函數的幀棧基地址開始偏移DW_OP_ fbreg值處,函數屬性DW_AT_frame_base指定函數的當前幀?;刂?。因此,讀取全局變量僅向調試代理發送變量地址,而讀取函數局部變量首先向調試代理發送讀取函數幀?;芳拇嫫鞯拿?,將調試代理返回的結果與局部變量的偏移量相加形成局部變量內存地址,然后再向調試代理發送變量地址。

4 運行結果與驗證

嵌入式遠程調試軟件中主機調試器運行在Windows XP上,目標機處理器為MPC8270。對于被調試的程序首先使用GCC編譯生成目標文件,主機調試器通過網口或串口連接到目標機的調試代理,在主機端搭建一個FTP服務器,目標機端通過FTP命令將目標文件下載到目標機[10],同時將連接信息返回給調試圖形界面,以目標機視圖的形式進行展示。在主機端設置斷點開始調試運行,調試代理會中斷目標文件的正常執行,等待主機的調試命令。主機端發送調試命令,對運行在目標機端的目標文件進行遠程調試,操作過程與本地調試操作一樣。通過Eclipse的各個視圖可以查看和設置內存、變量、寄存器等信息。圖4顯示的是調試過程中調試系統透視圖。

圖4 調試系統透視圖

5 結束語

通過對嵌入式遠程調試的原理深入研究,利用Eclipse GDB/MI接口封裝GDB和在目標機端搭建調試代理,設計并實現了基于Eclipse平臺的可視化嵌入式遠程調試軟件。遠程調試軟件可以完成本地調試器所具備的功能,例如內存值讀寫、寄存器值讀寫、斷點設置、單步執行等等,不但可以方便有效地幫助開發人員調試嵌入式程序,提高開發效率,而且大大降低項目的開發成本。由于該軟件是在Eclipse插件的基礎上實現的,因此它具有可擴展性,、可移植性強。設計的嵌入式遠程調試軟件只是針對單處理器,對多處理器的支持是下一步的研究重點。

[1]Richard Stallman,Roland Pesch,Stan Shebs,et al.Debuggingwith GDB:The GNU Source-Level Debugger,Tenth Edition[M].Boston:Free Software Foundation,2011.

[2]Jeong-Hoon Ji,Gyun Woo,Hyung-Bae Pak.Design and Implementation of Retargetable Software Debugger based on GDB[C].Third 2008 International Conference on Convergence and Hybrid Information Technology:737-740.

[3]Jeremy Bennett.Howto:GDB Remote Serial Protocol[EB/OL].Embecosm,2008[2013].http://www.embecosm.com/appnotes/ean4/embecosm-howto-rsp-serverean4-issue-2.html.

[4]Michael Galpin.Developing applications using the Eclipse C/C++Development Toolkit[EB/OL].IBM developer Works,2007[2013].http://www.ibm.com/developerworks/opensource/library/os-eclipse-stlcdt/.

[5]DWARF Standards Committee.DWARF Debugging Information Format Version 3[S].Free Standards Group,2005.

[6]龔蘭蘭,劉曉升,朱巧明.遠程調試系統的關鍵技術分析[J].計算機軟件與理論,2010,27(10):258-261.

[7]溫麗娜,謝彬,李連云.遠程開發環境中的目標機代理設計[J].計算機工程,2007,33(2):277-279.

[8]李紅衛.嵌入式遠程調試工具的研究與實現[J].微計算機信息,2009,25(1-2):87-89.

[9]張君毅,李洪威,桑釗,等.基于Eclipse的開發環境中調試器設計與實現[J].現代電子技術,2009(6):53-56.

[10]李杰.Linux環境下FTP系統的設計與實現[D].長春:吉林大學,2012.

Im plementation of Embedded Remote Debugging Software Based on Eclipse Platform

WANG Shuang,KANG Mu-ning
(School of Computer Science,Northwestern Polytechnical University,Xi’an 710129,China)

In order to solve the problem of long development cycle caused by the traditional embedded system,which mostly uses the command-line print for developing and debugging,the visual embedded remote debugging software based on the Eclipse platform and the CDT plug is designed and implemented in this paper.The debuging control software encapsulates the general cross debugger GDB through MI interface,analyzes debugging information of object file according to DWARF debugging information standard,and sends debugging commands via RSP.The debugging agent receives and handles debugging commands.The paper emphasizes on design and implementation of debugging control software and debugging agent,and the source level remote debugging for the target program running on MPC8270 is achieved.

Embedded;Debug Agent;Remote Debugging;GDB Debugger

10.3969/j.issn.1002-2279.2014.03.016

TP311

:A

:1002-2279(2014)03-0056-04

王爽(1989-),女,河南新鄉人,碩士研究生,主研方向:嵌入式系統及應用。

2013-11-14

猜你喜歡
嵌入式調試
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
基于航拍無人機的設計與調試
電子制作(2018年12期)2018-08-01 00:47:44
搭建基于Qt的嵌入式開發平臺
核電廠主給水系統調試
中國核電(2017年1期)2017-05-17 06:10:11
無線通信中頻線路窄帶臨界調試法及其應用
電子制作(2017年19期)2017-02-02 07:08:38
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
調壓柜的調試與試運行探討
工業電氣設備控制系統的安裝與調試
音頻處理器的調試
主站蜘蛛池模板: 欧美日韩精品一区二区视频| 亚洲视频免| 欧美另类视频一区二区三区| 国产男女免费完整版视频| 亚洲成人免费在线| 一本二本三本不卡无码| 欧美亚洲欧美| 毛片大全免费观看| 毛片免费高清免费| 欧美视频在线第一页| www.狠狠| 2021国产乱人伦在线播放| 亚洲无码电影| 欧美a在线看| 久久视精品| 成年看免费观看视频拍拍| 精品视频一区二区三区在线播| 精品91自产拍在线| 国产黄在线免费观看| 大学生久久香蕉国产线观看| 免费无遮挡AV| 国产麻豆va精品视频| 噜噜噜久久| 亚洲欧美在线综合图区| 婷婷成人综合| 97综合久久| 91视频日本| 亚洲永久色| a色毛片免费视频| 青青国产在线| 国产欧美另类| 67194成是人免费无码| 伊人精品视频免费在线| 波多野结衣中文字幕久久| 毛片大全免费观看| 国产精品久久久久久久久| 国产凹凸一区在线观看视频| 精品国产www| 国产精品久久久久久影院| 很黄的网站在线观看| 欧美精品亚洲精品日韩专区| 波多野结衣中文字幕一区二区 | 制服丝袜无码每日更新| 亚洲精品人成网线在线 | 久久福利网| 小说区 亚洲 自拍 另类| 中文字幕无码制服中字| 亚洲性网站| 男女性午夜福利网站| 91国内在线观看| 美女视频黄又黄又免费高清| 99中文字幕亚洲一区二区| 天天综合天天综合| 色窝窝免费一区二区三区 | 久久99蜜桃精品久久久久小说| 久久久久九九精品影院| 亚洲国产天堂在线观看| 无码国产伊人| 五月婷婷欧美| 91在线国内在线播放老师| 日韩东京热无码人妻| 日韩欧美国产综合| 亚洲首页国产精品丝袜| 亚洲欧美综合在线观看| 男人天堂亚洲天堂| 五月丁香伊人啪啪手机免费观看| 国产在线视频自拍| 国产成人超碰无码| 免费av一区二区三区在线| 精品五夜婷香蕉国产线看观看| 亚洲第一香蕉视频| 色视频国产| 国产精品太粉嫩高中在线观看| 亚洲av色吊丝无码| 天天综合色网| 欧美曰批视频免费播放免费| 一区二区三区在线不卡免费| 91久久夜色精品| 广东一级毛片| 97在线视频免费观看| 久久熟女AV| 色AV色 综合网站|