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

一種面向多虛擬處理器的程序條件斷點技術

2023-07-05 13:57:04戴麗虹武詠晗
航天控制 2023年3期
關鍵詞:符號模型

王 洋,申 彪,彭 亮,戴麗虹,武詠晗

北京航天自動控制研究所,北京 100854

0 引言

嵌入式軟件虛擬化仿真技術是通過模擬目標機嵌入式處理器及外設指令級行為,結合軟件調試信息解析和使用技術,使得軟件調試和測試擺脫對嵌入式目標硬件設備的依賴。

通過對航天控制領域虛擬化仿真和程序調試相關文獻的檢索,發(fā)現(xiàn)文獻[1]基于SPARC的嵌入式處理器研究了操作系統(tǒng)的移植方法;文獻[2]利用數(shù)據(jù)分發(fā)服務技術構建了數(shù)據(jù)通路,提出一種處理器之間的通訊解決方案;文獻[3]探索了多核虛擬處理器不同核之間的通信方式,提供了一種快速的多核同步技術;與本文面向通用嵌入式處理器不同,文獻[4]提出了一種針對PLC(可編程邏輯控制器)這類專用嵌入式軟件的斷點控制技術。

仿真技術和調試技術是現(xiàn)代軟件調試的重要技術,通常目標文件代碼段、數(shù)據(jù)段是仿真器的輸入,目標文件代碼段反匯編生成匯編指令序列,仿真模型完成匯編指令的取指、翻譯、執(zhí)行以及處理器外設的仿真。調試器以目標文件中調試信息段作為輸入,通過解析和識別源代碼中行信息、符號信息配合仿真器完成調試工作。

條件斷點技術是軟件調試技術的重要技術分支,通常應用于某一種處理器架構下的程序調試功能。與基于X86處理器和Windows操作系統(tǒng)API的程序斷點技術不同[5],基于軟件仿真技術的條件斷點運行在嵌入式虛擬處理器上而非真實的處理器。如何實現(xiàn)面向不同編譯器、嵌入式虛擬處理器的程序條件斷點控制是一個重要的技術問題,本文提出的面向多虛擬處理器的程序條件斷點技術支持多種編譯器、多種嵌入式處理器架構,主要創(chuàng)新內容如下:

1)提出一種通用的調試信息存儲結構;

2)提出一種條件斷點控制技術;

3)提出一種通用架構條件斷點控制模型;

4)基于通用條件斷點控制模型開發(fā)調試器DIP并完成了功能測試。

1 一種通用的調試信息存儲結構

1.1 問題提出

嵌入式軟件目標文件格式的組合方式有多種,運行嵌入式軟件的目標處理器架構也不同,例如CC編譯器生成目標文件為COFF加DWARF組合,目標處理器為DPS架構、GCC編譯器生成目標文件為ELF加STABS組合,目標處理器為SPARC架構、ARM某編譯器采用ELF加DWARF組合,目標處理器為ARM架構。如何構建通用的仿真調試模型來兼容多種編譯器和多種處理器,如何構建通用的條件斷點模型,實現(xiàn)不同嵌入式軟件深層次缺陷快速定位成為重要問題,為解決上述問題,本文提出了面向多虛擬處理器的程序條件斷點技術。

1.2 DWARF和STABS調試信息結構

DWARF[6](Debug with Arbitrary Record Format)調試信息保存在目標文件原始信息數(shù)據(jù)結構中,該數(shù)據(jù)結構定義如表1所示。

表1 DWARF主要節(jié)區(qū)定義

DWARF以樹狀結構保存各個編譯單元的序言數(shù)據(jù)、符號調試信息數(shù)據(jù)、行號調試信息數(shù)據(jù)。此時,全部調試信息是未經過重新組織的,編譯單元、函數(shù)、局部變量、全局變量、數(shù)據(jù)類型的壓縮信息分散在不同的數(shù)據(jù)結構中。

調試信息單元DIE(Debugging Information Entry)是符號結構信息(.debug_info)的基本單位,DIE中包括一個標簽和多個屬性,每個DIE節(jié)點與它的兄弟節(jié)點或子節(jié)點連接構成樹形結構。假設在main.c中定義兩個函數(shù)function1和function2,function1函數(shù)中定義了變量var1。則main.c具備編譯單元標簽以及名稱屬性、編譯路徑屬性、目標碼覆蓋范圍等屬性,function1和function2是main.c的子節(jié)點且互為兄弟節(jié)點,function1和function2具備子程序標簽以及函數(shù)名屬性、函數(shù)起地址范圍等屬性。Var1作為function1的子節(jié)點具備變量標簽、局部存儲屬性、變量名屬性、變量位置等屬性,因此不難發(fā)現(xiàn)main.c中的DIE構成具有2個兄弟節(jié)點的3級樹形結構。

DIE中描述的函數(shù)、全局變量、局部變量等保存的位置可能在內存、堆棧、寄存器中。符號的位置信息(.debug_loc)保存函數(shù)的棧幀信息和全局變量的靜態(tài)位置信息、局部變量的動態(tài)位置變化信息。

行號調試信息(.debug_line)構建了源代碼行信息與目標碼行信息的對應關系,當處理器運行至特點目標碼時,用戶可以根據(jù)上述對應關系,確定程序運行的源碼行。

STABS[7](String Tables)調試信息中符號和行號調試信息是以條目化的數(shù)據(jù)項形式存在的,STABS分為符號和行號調試信息,分別用.stabs條目和.stabn條目表示。

.stabs條目包括string,type,desc和value字段,其中string表示符號名稱(例如上文中main.c,function1,function2和var1),desc表示符號屬性(例如全局、局部、靜態(tài)等屬性),value表示符號尋址方式和尋址內容(例如內存、堆棧偏移、寄存器等)。

.stabn條目包括type,desc,value和type表示行號類型標識,desc標識源代碼行,value標識目標碼地址或目標碼地址序列的起始地址。

1.3 一種通用調試信息存儲結構

本文提出了一種如圖1所示的通用調試信息存儲結構,該存儲結構是一種與目標文件格式無關的結構。存儲結構中一個源程序的全部調試信息存儲在CModule對象中,CModule對象中實例化哈希表。

一個CModuleInfo對象中保存一個編譯單元全部調試信息,包括:

1)函數(shù)信息Map;

2)局部變量Map;

3)全局變量Map;

4)行號信息Map;

5)數(shù)據(jù)類型信息Map;

6)當前編譯單元的編號、名稱、起始PC值和結束PC值。

CFunctionInfo對象包括函數(shù)名、函數(shù)起始PC值、函數(shù)結束PC值、函數(shù)名所在的源代碼行、CSymbolX對象,該對象保存函數(shù)名對應的符號信息,包括:

1)符號名稱;

2)符號的類型CTypeX*;

3)符號的寄存器偏移(局部變量寄存器存儲);

4)符號的棧幀偏移(局部變量堆棧存儲);

5)符號的物理地址(全局變量);

6)符號的存儲類型(寄存器、堆棧、內存)。

CSymbolX*保存局部變量和全局變量的符號信息。CSymbolX對象中保存了當前變量的類型信息CTypeX*,CTypeX包括:

1)類型名稱、編號;

2)類型的種類,包括基本類型和結構體、枚舉等多種類型;

3)指向CTypeX*的對象,此對象非空則表示該類型為指向其他類型的typedef類型;

4)類型的屬性,包括靜態(tài)屬性、寄存器存儲、參數(shù)存儲、全局存儲、枚舉成員、結構體;

5)成員、聯(lián)合體成員、函數(shù)成員等;

6)復合類型如結構體中各個元素的索引系數(shù),包括位索引和字節(jié)索引。

CSymbolX*的哈希表,用以保存當前類型下引用到得新的符號信息。

CLineInfo*保存行號調試信息,CLineInfo對象包括:

1)源代碼行;

2)當前源代碼行對應的目標碼序列。

圖1 通用的調試信息存儲結構

2 程序條件斷點控制技術

2.1 處理器虛擬仿真技術

嵌入式處理器仿真技術是在宿主機上模擬目標處理器行為,實現(xiàn)圖2所示的嵌入式軟件仿真,一般執(zhí)行過程包括:

1)反匯編器對嵌入式程序的二進制目標文件的代碼段進行反匯編,生成匯編指令碼;

2)處理器仿真模型中PC控制邏輯取程序入口PC后,匯編指令執(zhí)行器開始執(zhí)行指令周期循環(huán)(取指、譯碼、執(zhí)行);

3)仿存模型中保存程序執(zhí)行過程中的靜態(tài)內存、堆內存、棧空間和寄存器數(shù)據(jù);

4)斷點控制器注冊處理器外部回調函數(shù),回調函數(shù)處理條件斷點事件。

圖2 虛擬處理器仿真行為模型

2.2 條件斷點控制技術

在虛擬處理器架構下,實現(xiàn)條件斷點方式如圖2中程序所示,假設條件斷點的觸發(fā)條件是structX.stFoo.iBar==5,觸發(fā)位置為圖3中第13行。實現(xiàn)條件斷點的控制過程則如下:

首先,需要對表達式進行詞法和語法分析。本文利用Flex&bsion構建語法樹,語法樹葉子節(jié)點為iBar,iBar的父節(jié)點為stFoo,stFoo的父節(jié)點為structX;

圖3 條件斷點程序偽代碼

其次,通用的調試信息存儲結構CSymbolX*中保存有structX.stFoo.iBar數(shù)據(jù)結構信息, CTypeX*保存有structX和stFoo的結構體類型信息,通過尋址解析邏輯可以獲取iBar的地址;

最后,行號調試信息CLineInfo中存有語句structX.stFoo.iBar==i表達式所在圖3所示的源碼行(13行)和該語句對應目標碼的PC,當處理器模型判斷當前處理器的PC與structX.stFoo.iBar==i行所處PC相同時,斷點控制器觸發(fā)函數(shù)回調:

1)斷點控制器通過iBar地址查詢當前的iBar值,將iBar值傳入回調函數(shù);

2)回調函數(shù)判斷iBar值是否等于5,如果等于5則處理器PC保持,程序暫停;如果不等于5則程序PC增加后繼續(xù)運行。

2.3 通用條件斷點控制模型

利用圖4所示的條件斷點控制技術,可以構建圖5所示的通用條件斷點控制模型,該模型包括4個主要部分:

圖4 條件斷點控制原理圖

圖5 通用條件斷點控制模型

第1部分,調試信息解析邏輯和通用調試信息存儲模型,調試信息解析邏輯支持對不同編譯器的調試信息格式解析,解析格式包括ELF、COFF、Stab、DWARF-v2、DWARF-v3、DWARF-v4以及自定義的調試信息格式,通用調試信息存儲模型中保存統(tǒng)一的調試信息,通用調試信息包含行號信息、符號信息[8]。

第2部分,模塊化的虛擬處理器模型和通用的條件斷點控制接口,通用的條件斷點控制接口適配不同處理器,接口中統(tǒng)一處理來自FLEX&BISON注冊的回調函數(shù),處理過程如圖6所示。

圖6 調試器DIP架構圖

第3部分,FLEX&BISON引擎,引擎具備3個主要功能:

1)FLEX&BISON引擎將條件斷點表達式解析為符號樹,符號樹種全部變量的地址和類型等信息通過查詢通用調試信息存儲結構獲取;

2)FLEX&BISON引擎解析條件表達式,以函數(shù)回調的形式,注冊在通用斷點控制接口中,滿足斷點表達式條件時,虛擬處理器暫停運行;

3)FLEX&BISON引擎收到虛擬處理器暫停運行消息后,通知前端調試器暫停在條件斷點所在的源碼行。

第4部分,前端調試器。前端調試器用于顯示條件斷點,顯示當前調試的源代碼等。

3 軟件實現(xiàn)與驗證

基于通用架構條件斷點控制模型開發(fā)了調試DIP,軟件實現(xiàn)架構如圖6所示[9]。

調試器實現(xiàn)了對DWARF和STABS調試信息的解析,支持通用的調試信息存儲格式,支持SPARC、DPS、ARM的處理器的仿真,支持前端用戶界面,實現(xiàn)面向多編譯器和多處理器的條件斷點控制。

為了考核條件斷點調試解析功能的正確性、多編譯器和虛擬處理器兼容能力,在表2所示的硬件場景進行了測試。

表2 測試平臺硬件指標

考核7項內容,設計功能測試用例1203個,詳細考核情況如表3所示。

表3 條件斷點支持情況

例如針對通用條件斷點處理功能,如表4所示,測試用例考核了等于、大于、小于條件判斷,考核結構體、聯(lián)合體成員的符號判斷邏輯,考核程序特定語句命中次數(shù)的判斷邏輯,通過條件斷點功能發(fā)現(xiàn)了多個載人航天型號控制系統(tǒng)嵌入式軟件問題。

表4 通用條件斷點處理邏輯支持情況

4 結論

隨著航天領域嵌入式軟件種類和復雜度增加,調試器從面向單一編譯器發(fā)展為面向多編譯器架構,為滿足航天領域多種類型嵌入式軟件的研發(fā)和測試需求,提出了一種通用的調試信息存儲結構、一種條件斷點控制技術和一種通用架構條件斷點控制模型,基于通用架構條件斷點控制模型開發(fā)了調試器DIP,將條件斷點技術應用于載人航天、探月工程等多個核心關鍵嵌入式軟件測試中。通過使用通用的條件斷點功能,更容易發(fā)現(xiàn)不同嵌入式軟件中的深層軟件問題,在未來,以上技術將在更多航天型號嵌入式軟件測試中得到驗證和應用。

猜你喜歡
符號模型
一半模型
學符號,比多少
幼兒園(2021年6期)2021-07-28 07:42:14
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
“+”“-”符號的由來
變符號
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
倍圖的全符號點控制數(shù)
圖的有效符號邊控制數(shù)
主站蜘蛛池模板: 亚洲第一av网站| 97免费在线观看视频| 中文字幕在线日韩91| 丝袜无码一区二区三区| 波多野结衣一区二区三区四区视频| 国产一级毛片网站| 色综合久久88色综合天天提莫| 久久视精品| 亚洲an第二区国产精品| 内射人妻无套中出无码| 黄色一及毛片| 日韩高清一区 | 久久黄色影院| 国产人成网线在线播放va| 亚洲国产综合精品一区| 精品精品国产高清A毛片| 亚洲国产AV无码综合原创| 国产91小视频| 9啪在线视频| 亚洲日韩国产精品无码专区| 国产福利影院在线观看| 日韩欧美国产三级| 亚洲第一色网站| 国产欧美又粗又猛又爽老| 在线观看国产一区二区三区99| 亚洲视频免| 亚洲精品欧美日韩在线| 欧美不卡视频一区发布| 国产女人在线视频| 免费高清自慰一区二区三区| 久青草免费视频| 成人第一页| 亚洲永久色| 国产高潮视频在线观看| 香蕉久人久人青草青草| 亚洲精品国产日韩无码AV永久免费网 | 国产综合在线观看视频| 免费jjzz在在线播放国产| 国产Av无码精品色午夜| 麻豆国产在线观看一区二区 | 精品国产免费第一区二区三区日韩| 国产亚洲欧美另类一区二区| 精品综合久久久久久97| A级毛片无码久久精品免费| 午夜欧美理论2019理论| 欧美日韩中文字幕二区三区| a级免费视频| 亚洲黄色成人| 久久午夜影院| 国产香蕉97碰碰视频VA碰碰看| 午夜福利网址| 精品91在线| 亚洲综合中文字幕国产精品欧美| 国产乱人伦偷精品视频AAA| 永久在线精品免费视频观看| 亚洲自偷自拍另类小说| av天堂最新版在线| 亚洲乱伦视频| 亚洲手机在线| 97视频免费看| 天堂成人av| 日韩AV无码一区| 在线免费不卡视频| 国产欧美网站| 少妇极品熟妇人妻专区视频| 自慰网址在线观看| 久久成人免费| 伊人久久精品无码麻豆精品| 欧美成人午夜影院| 国产精品区视频中文字幕| 亚洲热线99精品视频| 99视频在线看| 华人在线亚洲欧美精品| 国产精品亚洲日韩AⅤ在线观看| 538国产视频| 欧美精品综合视频一区二区| 国产老女人精品免费视频| 首页亚洲国产丝袜长腿综合| 亚洲国产理论片在线播放| 国产一国产一有一级毛片视频| 日韩成人午夜| 国产精品视频公开费视频|