久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ELF的嵌入式軟件源碼級交叉調試技術

基于ELF的嵌入式軟件源碼級交叉調試技術

作者: 時間:2012-03-20 來源:網絡 收藏
1 引言
在計算機軟件技術的發展過程中,各種編程調試技術與工具取得了重大的發展,其中調試工具一直是工具軟件中研究應用的一大熱點。

開發任何一個軟件都不可避免地存在各種錯誤,要修正錯誤必須找出其錯誤原因。通常程序員利用調試器來跟蹤程序執行情況,快速有效地定位錯誤產生的位置從而找到引起錯誤的原因,并改正錯誤。

調試器為用戶提供的主要功能包括:在目標程序中設置、刪除斷點;以單步執行或連續執行等方式控制目標程序運行;瀏覽程序中的變量或表達式的值;查看、修改目標機寄存器的內容;查看、修改目標機內存的內容。源碼級調試器是面向高級語言的符號調試工具,它基于源代碼的語句和符號跟蹤觀察目標程序,同時提供基于匯編級的程序跟蹤功能以滿足用戶底層的調試需要。通用計算機軟件一般在同一臺機器上進行編輯、編譯、調試;而嵌入式軟件的目標系統多為特殊的專用系統,通常采用宿主機/目標機開發環境,借助通用計算機作為編輯源文件的宿主機,利用交叉編譯器在宿主機上編譯生成目標機的可執行代碼,調試時通過通訊介質(串線或網絡)將目標代碼下載到目標系統上運行,利用交叉調試器進行跟蹤調試。

國外計算機業在調試器領域中發展很快,開發了許多功能強大、支持多種目標機的交叉調試器。但國內在調試器領域中一直處于落后狀態,普遍采用的多是國外的工具產品。目前國內的嵌入式系統發展迅速,對嵌入式軟件的開發環境也提出了新的要求,因此,我們著手進行嵌入式軟件的源碼級交叉調試器的設計與實現,以適應當前嵌入式軟件發展的需要。

2 源碼級交叉調試器的實現途徑

程序運行過程中目標程序的指令代碼和數據都映射到目標機上相應的內存內容,為了實現源碼級調試,利用目標文件中在程序編譯鏈接時生成的調試信息來實現目標程序與源程序之間的映射,從而在源碼級實現對程序執行情況的控制和觀察。其關鍵在于找到調試控制點和數據在源程序與目標程序之間的映射關系。

任何數據都有名和值兩個側面,數據名與數據值之間的映射關系為:根據數據名得到存放該數據值的內存地址,再從目標機的內存地址取出其內容即為數據值,如圖1所示:

調試中的程序控制點通常為源程序中的函數、語句行等,它們對應于裝載到目標內存中的相應目標代碼,要實現程序的運行控制關鍵在于得到源代碼與目標代碼之間的映射關系:由源碼定位信息得到相應的目標碼信息;由目標碼地址得到相應的源碼定位信息。源碼定位信息為源文件名+行號或函數名;目標碼信息為目標指令在目標機內存中的起始和終止地址。兩者關系如圖2所示。

嵌入式軟件以宿主機/目標機模式開發,其交叉調試器分為宿主機部分和目標機部分,兩者以統一的通訊協議進行通信,宿主機向目標機發送命令,目標機接收、執行命令并將結果返回宿主機,從而實現兩機之間的交互控制。免費軟件基金會FSF提供的調試工具gdb具有一套比較成熟的通訊協議----remote通訊協議,該協議作為開放軟件被廣為采用,在此我們選擇了rmote協議作為交叉調試器的遠程通訊協議。

3 ELF格式目標文件

目標文件是實現源碼級調試的基礎,需要詳細分析文件的格式及內容以從中獲取有用的調試信息。在設計調試器時采用可執行連接格式――ELF格式目標文件作為開發基礎,ELF(Executable and Linking Format)是UNIX系統實驗室(USL)作為應用程序二進制接口(Application Binary Interface(ABI))而開發和發布的,已被軟件業廣泛采用,在Linux系統中ELF格式是其默認的目標文件格式,許多嵌入式軟件都采用ELF 格式作為目標文件格式。

ELF目標文件主要有三種類型:可重定位文件,可執行文件,共享的目標文件,我們以可執行文件為分析對象。

  ELF文件格式如圖3所示:

ELF頭固定在文件的起始位置,其它各部分的位置由ELF頭及其它相關信息獲得。

1、ELF頭

ELF頭是整個文件的入口,具有固定的長度,52個字節,包含14個值。包括ELF文件標識,程序頭表和節頭表的位置、長度,文件中段的數目和節的數目等信息。


上一頁 1 2 3 下一頁

評論


技術專區

關閉