• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種嵌入式環(huán)境下的代碼動(dòng)態(tài)性能剖析器制造技術(shù)

    技術(shù)編號(hào):8682639 閱讀:250 留言:0更新日期:2013-05-09 02:39
    本發(fā)明專利技術(shù)公開了一種嵌入式環(huán)境下的代碼動(dòng)態(tài)性能剖析器,包括對(duì)目標(biāo)函數(shù)進(jìn)行運(yùn)行時(shí)性能跟蹤的樁代碼模塊、用于截取目標(biāo)函數(shù)的控制權(quán)使控制流轉(zhuǎn)移到樁代碼模塊中的樁代碼上并保存和恢復(fù)寄存器上下文的膠水代碼模塊、生成用于剖析的可執(zhí)行文件的前期數(shù)據(jù)處理子模塊、對(duì)采集到的數(shù)據(jù)進(jìn)行整理統(tǒng)計(jì)的后期處理子模塊;實(shí)現(xiàn)目機(jī)標(biāo)與主機(jī)的IDE通信,以此實(shí)現(xiàn)主機(jī)與目標(biāo)機(jī)之間的數(shù)據(jù)傳送的守護(hù)程序和結(jié)果顯示模塊。本發(fā)明專利技術(shù)可以分析嵌入式下用戶函數(shù)及庫(kù)函數(shù)的執(zhí)行時(shí)間和被調(diào)用次數(shù),通過(guò)分析比較,該方法比現(xiàn)有工具統(tǒng)計(jì)速度更快、準(zhǔn)確度更高。

    【技術(shù)實(shí)現(xiàn)步驟摘要】

    本專利技術(shù)涉及軟件程序質(zhì)量動(dòng)態(tài)分析
    ,具體涉及一種嵌入式環(huán)境下的代碼動(dòng)態(tài)性能剖析器
    技術(shù)介紹
    在現(xiàn)代的軟件發(fā)展中,人們對(duì)軟件質(zhì)量的要求越高,程序分析就越發(fā)占有一席之地。程序分析有靜態(tài)分析和動(dòng)態(tài)分析兩種:靜態(tài)分析如數(shù)據(jù)依賴分析方法主要是在不執(zhí)行程序的前提下對(duì)程序的源代碼進(jìn)行分析,得到程序的結(jié)構(gòu)信息、逆向提取的對(duì)象模型和類關(guān)系及程序的復(fù)雜度度量等;而動(dòng)態(tài)分析如K-TAILS方法則是在程序的執(zhí)行中,對(duì)程序的行為進(jìn)行分析的技術(shù)。Daikon是一個(gè)把動(dòng)態(tài)分析和技術(shù)和靜態(tài)分析技術(shù)的優(yōu)點(diǎn)結(jié)合在一起的軟件分析工具。動(dòng)態(tài)分析一般分為源代碼植入技術(shù)和目標(biāo)碼插裝技術(shù),一個(gè)簡(jiǎn)單的做法是隨機(jī)產(chǎn)生輸入數(shù)據(jù)并觀察程序?qū)@些輸入返回的結(jié)果。相對(duì)于靜態(tài)分析來(lái)說(shuō),動(dòng)態(tài)分析就比較復(fù)雜,同時(shí)需要的時(shí)間開銷就可能更多,此外有時(shí)可能要付出更大的代價(jià)。目前,大多數(shù)動(dòng)態(tài)程序分析工具所測(cè)出的程序執(zhí)行時(shí)間相當(dāng)?shù)牟痪_,比如說(shuō)gprof由于其本身的工作原理,對(duì)于執(zhí)行時(shí)間較短的函數(shù)測(cè)出的時(shí)間大多是零,而執(zhí)行再快的程序總是要消耗時(shí)間的。相對(duì)于gprof來(lái)說(shuō),Itrace精確度還是能接受的,但在測(cè)遞歸函數(shù)時(shí)占用的時(shí)間過(guò)長(zhǎng)。程序插裝的概念是由J.C.Huang教授首次提出的。插裝技術(shù)有很多種:從插裝的對(duì)象來(lái)分,有源代碼插裝和二進(jìn)制代碼插裝;從插裝的階段來(lái)分,有靜態(tài)插裝和動(dòng)態(tài)插裝,在編譯時(shí)的插裝方式屬于動(dòng)態(tài)插裝。各種插裝技術(shù)都有其優(yōu)缺點(diǎn)以及適用場(chǎng)合。
    技術(shù)實(shí)現(xiàn)思路
    針對(duì)上述現(xiàn)有技術(shù),本專利技術(shù)要解決的技術(shù)問(wèn)題是:現(xiàn)有的動(dòng)態(tài)程序分析工具所測(cè)出的程序執(zhí)行時(shí)間不精確。為了解決上述技術(shù)問(wèn)題,本專利技術(shù)采用如下技術(shù)方案: 一種嵌入式環(huán)境下的代碼動(dòng)態(tài)性能剖析器,其特征在于,包括如下模塊, 樁代碼模塊:對(duì)目標(biāo)函數(shù)進(jìn)行運(yùn)行時(shí)性能跟蹤; 膠水代碼模塊:用于截取目標(biāo)函數(shù)的控制權(quán),使控制流轉(zhuǎn)移到樁代碼模塊中的樁代碼上去,并保存和恢復(fù)寄存器上下文; 數(shù)據(jù)處理模塊:包括生成用于剖析的可執(zhí)行文件的前期數(shù)據(jù)處理子模塊和對(duì)采集到的數(shù)據(jù)進(jìn)行整理統(tǒng)計(jì)的后期處理子模塊; 結(jié)果顯示模塊:根據(jù)運(yùn)行時(shí)性能跟蹤收集到的部分性能數(shù)據(jù)對(duì)數(shù)據(jù)進(jìn)行可視化的友好顯示,顯示出函數(shù)的執(zhí)行時(shí)間和執(zhí)行次數(shù); 守護(hù)程序:實(shí)現(xiàn)目機(jī)標(biāo)與主機(jī)的IDE通信,以此實(shí)現(xiàn)主機(jī)與目標(biāo)機(jī)之間的數(shù)據(jù)傳送,通過(guò)TCP連接接收數(shù)據(jù),接收來(lái)自IDE的文件、通知和控制命令;以及監(jiān)視目標(biāo)程序的執(zhí)行并發(fā)送回性能數(shù)據(jù)到主機(jī)上的IDE來(lái)處理。所述膠水代碼模塊運(yùn)行ARM中的跳轉(zhuǎn)指令B指令,跳轉(zhuǎn)指令B指令執(zhí)行后,會(huì)把返回的地址保存到LR寄存器;如果需要源程序執(zhí)行另一個(gè)程序代碼,則修改LR寄存器里的返回地址,把原來(lái)應(yīng)該返回的地址LR中的內(nèi)容保存到SP堆棧中去,把預(yù)執(zhí)行的代碼地址拷貝到LR中去,使程序的控制權(quán)轉(zhuǎn)向預(yù)執(zhí)行的程序,當(dāng)需要返回到原程序中時(shí),將SP堆棧中的內(nèi)容寫到LR寄存器。作為本專利技術(shù)的進(jìn)一步改進(jìn),根據(jù)目標(biāo)函數(shù)的個(gè)數(shù)通過(guò)跳轉(zhuǎn)表項(xiàng)模板動(dòng)態(tài)生成跳轉(zhuǎn)表,用于解決目標(biāo)函數(shù)的標(biāo)識(shí)與控制權(quán)截取的問(wèn)題。作為本專利技術(shù)的進(jìn)一步改進(jìn),跳轉(zhuǎn)表在后臺(tái)被編譯成一個(gè)單獨(dú)的模塊與用戶程序鏈接在一起。作為本專利技術(shù)的進(jìn)一步改進(jìn),跳轉(zhuǎn)表中的一個(gè)目標(biāo)函數(shù)與跳轉(zhuǎn)表項(xiàng)、對(duì)應(yīng)的ID表與目標(biāo)函數(shù)入口地址關(guān)聯(lián),一一對(duì)應(yīng)。目標(biāo)函數(shù)的個(gè)數(shù)直接影響到這些表的大小,為了減少目標(biāo)程序運(yùn)行時(shí)所占用的內(nèi)存空間,必須將其內(nèi)容盡可能的精簡(jiǎn)。作為本專利技術(shù)的進(jìn)一步改進(jìn),將目標(biāo)函數(shù)的第一條指令替換為跳轉(zhuǎn)指令,跳轉(zhuǎn)目標(biāo)為目標(biāo)函數(shù)對(duì)應(yīng)的跳轉(zhuǎn)表項(xiàng)的調(diào)用處理塊; 作為本專利技術(shù)的進(jìn)一步改進(jìn),將目標(biāo)函數(shù)的第一條指令填充到目標(biāo)函數(shù)對(duì)應(yīng)跳轉(zhuǎn)表項(xiàng)的指令占位槽中。作為本專利技術(shù)的進(jìn)一步改進(jìn),所述跳轉(zhuǎn)項(xiàng)中調(diào)用處理塊在調(diào)用處理完成后就開始對(duì)目標(biāo)函數(shù)的性能數(shù)據(jù)進(jìn)行統(tǒng)計(jì) 作為本專利技術(shù)的進(jìn)一步改進(jìn),指令占位糟項(xiàng)是原目標(biāo)函數(shù)的第一條指令,即目標(biāo)函數(shù)開始執(zhí)行;轉(zhuǎn)入目標(biāo)函數(shù)項(xiàng)是指控制真正的轉(zhuǎn)入到目標(biāo)函數(shù)的內(nèi)部開始執(zhí)行目標(biāo)函數(shù);當(dāng)目標(biāo)函數(shù)執(zhí)行完成后,由于修改了程序中的LR寄存器,所以控制會(huì)轉(zhuǎn)入到跳轉(zhuǎn)表項(xiàng)的退出處理項(xiàng)去執(zhí)行,退出處理項(xiàng)一方面通知樁代碼停止統(tǒng)計(jì)目標(biāo)函數(shù)的性能,另一方面把程序的控制權(quán)真正的返回給原程序。作為本專利技術(shù)的進(jìn)一步改時(shí),對(duì)目標(biāo)函數(shù)的執(zhí)行時(shí)間進(jìn)行計(jì)時(shí),采用一種分片計(jì)時(shí)。所述分片計(jì)時(shí)是指當(dāng)目標(biāo)函數(shù)發(fā)生了子函數(shù)調(diào)用或者子函數(shù)返回時(shí)才進(jìn)行執(zhí)行時(shí)間的一次計(jì)算,計(jì)算得到的時(shí)間可能是總執(zhí)行時(shí)間,也可能是總執(zhí)行時(shí)間的一部分;當(dāng)目標(biāo)函數(shù)沒(méi)有對(duì)其他目標(biāo)函數(shù)調(diào)用時(shí),計(jì)算的時(shí)間就是此目標(biāo)函數(shù)總的執(zhí)行時(shí)間;當(dāng)目標(biāo)函數(shù)包含有子函數(shù)為目標(biāo)函數(shù)的調(diào)用時(shí),則此計(jì)算的時(shí)間只是目標(biāo)函數(shù)總執(zhí)行時(shí)間的一部分。本專利技術(shù)的工作流程為:用戶程序(目標(biāo)文件)、膠水代碼以及樁代碼會(huì)被鏈接器一起鏈接到可執(zhí)行文件中,這是間接地利用鏈接插樁的方法;對(duì)生成的可執(zhí)行文件還需要由剖析器進(jìn)行縫補(bǔ)操作,縫補(bǔ)操作的目的是將目標(biāo)函數(shù)與樁代碼關(guān)聯(lián)起來(lái),使目標(biāo)函數(shù)在執(zhí)行時(shí)能通知樁程序采集數(shù)據(jù)。通過(guò)縫補(bǔ)操作以后就可使可執(zhí)行程序在調(diào)用目標(biāo)函數(shù)的時(shí)候跳轉(zhuǎn)到膠水程序上,進(jìn)而轉(zhuǎn)入到樁程序中。生成的最終可執(zhí)行文件將被守護(hù)進(jìn)程發(fā)送到目標(biāo)機(jī)開發(fā)板上運(yùn)行,程序運(yùn)行完成后會(huì)生成剖析數(shù)據(jù)。再通過(guò)守護(hù)進(jìn)程將剖析數(shù)據(jù)傳回IDE的剖析器,結(jié)果顯示模塊將分析結(jié)果可視化友好的顯示出來(lái)。與現(xiàn)有技術(shù)相比,本專利技術(shù)具有以下有益效果: 一、設(shè)計(jì)了代碼動(dòng)態(tài)性能分析工具,使得程序開發(fā)人員能更為準(zhǔn)確的來(lái)定位性能的瓶頸進(jìn)而更好的優(yōu)化程序,從而可以使程序開發(fā)人員開發(fā)出高效的嵌入式程序。二、采用對(duì)可執(zhí)行文件靜態(tài)插裝的方法無(wú)需進(jìn)入內(nèi)核,從而明顯減少了對(duì)被測(cè)程序性能的影響, 三、呈現(xiàn)出被測(cè)程序真實(shí)的運(yùn)行時(shí)間及執(zhí)行次數(shù)情況。附圖說(shuō)明圖1跳轉(zhuǎn)表項(xiàng)控制轉(zhuǎn)移流程。具體實(shí)施例方式下面將結(jié)合附圖及具體實(shí)施方式對(duì)本專利技術(shù)作進(jìn)一步的描述。一 跳轉(zhuǎn)表(_JUMP_TABLE) 跳轉(zhuǎn)表用于解決目標(biāo)函數(shù)的標(biāo)識(shí)與控制權(quán)截取的問(wèn)題。 跳轉(zhuǎn)表根據(jù)目標(biāo)函數(shù)的個(gè)數(shù)通過(guò)跳轉(zhuǎn)表項(xiàng)模板動(dòng)態(tài)生成的。一個(gè)目標(biāo)函數(shù)與跳轉(zhuǎn)表項(xiàng)、對(duì)應(yīng)的ID表與目標(biāo)函數(shù)入口地址關(guān)聯(lián),它們一一對(duì)應(yīng)。目標(biāo)函數(shù)的個(gè)數(shù)直接影響到這些表的大小,為了減少目標(biāo)程序運(yùn)行時(shí)所占用的內(nèi)存空間,必須將其內(nèi)容盡可能的精簡(jiǎn)。跳轉(zhuǎn)表在制作剖析目標(biāo)時(shí)由IDE根椐用戶選擇的目標(biāo)函數(shù)動(dòng)態(tài)生成,然后會(huì)在后臺(tái)被編譯成一個(gè)單獨(dú)的模塊與用戶程序鏈接在一起。結(jié)合圖1所示,假如函數(shù)A為將要分析性能的目標(biāo)函數(shù),縫補(bǔ)工作時(shí)其中有一個(gè)動(dòng)作是將目標(biāo)函數(shù)的第一條指令替換為跳轉(zhuǎn)指令,跳轉(zhuǎn)目標(biāo)是目標(biāo)函數(shù)對(duì)應(yīng)的跳轉(zhuǎn)表項(xiàng)的調(diào)用處理塊,另一個(gè)縫補(bǔ)動(dòng)作是將目標(biāo)函數(shù)的第一條指令填充到目標(biāo)函數(shù)對(duì)應(yīng)跳轉(zhuǎn)表項(xiàng)的指令占位槽中,跳轉(zhuǎn)表項(xiàng)中的指令占位糟,這樣就把原程序的第一條指令保存起來(lái)以便以后執(zhí)行,所以當(dāng)程序?qū)⒁獔?zhí)行函數(shù)A的第一條指令時(shí),就會(huì)根據(jù)目標(biāo)函數(shù)A的ID號(hào)轉(zhuǎn)到跳轉(zhuǎn)表中目標(biāo)函數(shù)A對(duì)應(yīng)的跳轉(zhuǎn)表項(xiàng)中去。跳轉(zhuǎn)項(xiàng)中的調(diào)用處理功能是為轉(zhuǎn)入統(tǒng)計(jì)函數(shù)(函數(shù)執(zhí)行時(shí)間統(tǒng)計(jì)和函數(shù)調(diào)用次數(shù))做準(zhǔn)備的,調(diào)用處理完成后就開始對(duì)目標(biāo)函數(shù)的性能數(shù)據(jù)進(jìn)行統(tǒng)計(jì)了 ;指令占位糟項(xiàng)是原目標(biāo)函數(shù)A的第一條指令,即目標(biāo)函數(shù)開始執(zhí)行了 ;轉(zhuǎn)入目標(biāo)函數(shù)項(xiàng)是指控制真正的轉(zhuǎn)入到目標(biāo)函數(shù)A的內(nèi)部開始執(zhí)行目標(biāo)函數(shù)A ;當(dāng)目標(biāo)函數(shù)A執(zhí)行完成后,由于修改了程序中的LR寄存器,所以控制會(huì)轉(zhuǎn)入到跳轉(zhuǎn)表項(xiàng)的退出處理項(xiàng)去執(zhí)行,退出處理項(xiàng)一方面是為了通知樁代碼停止統(tǒng)計(jì)目標(biāo)函數(shù)的性本文檔來(lái)自技高網(wǎng)...

    【技術(shù)保護(hù)點(diǎn)】
    一種嵌入式環(huán)境下的代碼動(dòng)態(tài)性能剖析器,其特征在于,包括如下模塊,樁代碼模塊:對(duì)目標(biāo)函數(shù)進(jìn)行運(yùn)行時(shí)性能跟蹤;?膠水代碼模塊:用于截取目標(biāo)函數(shù)的控制權(quán),使控制流轉(zhuǎn)移到樁代碼模塊中的樁代碼上去,并保存和恢復(fù)寄存器上下文;數(shù)據(jù)處理模塊:包括生成用于剖析的可執(zhí)行文件的前期數(shù)據(jù)處理子模塊和對(duì)采集到的數(shù)據(jù)進(jìn)行整理統(tǒng)計(jì)的后期處理子模塊;?結(jié)果顯示模塊:根據(jù)運(yùn)行時(shí)性能跟蹤收集到的部分性能數(shù)據(jù)對(duì)數(shù)據(jù)進(jìn)行可視化的友好顯示,顯示出函數(shù)的執(zhí)行時(shí)間和執(zhí)行次數(shù);?守護(hù)程序:實(shí)現(xiàn)目機(jī)標(biāo)與主機(jī)的IDE通信,以此實(shí)現(xiàn)主機(jī)與目標(biāo)機(jī)之間的數(shù)據(jù)傳送,通過(guò)TCP連接接收數(shù)據(jù),接收來(lái)自IDE的文件、通知和控制命令;以及監(jiān)視目標(biāo)程序的執(zhí)行并發(fā)送回性能數(shù)據(jù)到主機(jī)上的IDE來(lái)處理。

    【技術(shù)特征摘要】

    【專利技術(shù)屬性】
    技術(shù)研發(fā)人員:陳文宇崔娟娜劉貴松歐睿杰符明晟袁野朱建
    申請(qǐng)(專利權(quán))人:電子科技大學(xué)
    類型:發(fā)明
    國(guó)別省市:

    網(wǎng)友詢問(wèn)留言 已有0條評(píng)論
    • 還沒(méi)有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。

    1
    主站蜘蛛池模板: 国产精品无码久久久久| 日韩精品久久无码中文字幕| 亚洲av无码成人影院一区| 日韩人妻无码精品久久久不卡 | 亚洲精品无码Av人在线观看国产| 一区二区无码免费视频网站| 亚洲国产精品成人精品无码区| 久久久久久亚洲精品无码| 久久无码高潮喷水| 亚洲成av人片不卡无码| 国产成人无码aa精品一区| 久久亚洲中文字幕无码| 国产av无码专区亚洲av桃花庵 | 无码中文在线二区免费| 亚洲国产精品无码久久久秋霞2 | 亚洲av无码乱码国产精品fc2| 亚洲人成网亚洲欧洲无码| 亚洲欧洲自拍拍偷午夜色无码| 亚洲AV无码国产精品色| 久久久久亚洲AV片无码| 亚洲欧洲日产国码无码久久99| 加勒比无码一区二区三区| 亚洲啪AV永久无码精品放毛片| 日韩精品久久无码中文字幕 | 无码aⅴ精品一区二区三区浪潮| av无码a在线观看| 亚洲精品无码久久久久| 久久无码一区二区三区少妇| 免费无码专区毛片高潮喷水| 国产成人无码a区在线视频| 国产精品无码一区二区三区在| 久久人妻无码一区二区| 亚洲a∨无码精品色午夜| 亚洲精品中文字幕无码A片老| 亚洲国产超清无码专区| 亚洲AV无码专区在线电影成人| 中文字幕无码乱码人妻系列蜜桃| 国产成人无码网站| 人妻AV中出无码内射| 亚洲AV无码一区二区三区在线| 人妻无码第一区二区三区 |