欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種多斷點的軟件調(diào)試裝置和方法

文檔序號:8457215閱讀:279來源:國知局
一種多斷點的軟件調(diào)試裝置和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件調(diào)試技術(shù),尤其涉及一種多斷點的軟件調(diào)試裝置和方法。
【背景技術(shù)】
[0002]微處理器調(diào)試技術(shù)廣泛地應(yīng)用于軟件故障定位、軟件代碼分析以及逆向工程領(lǐng)域,對微處理器的設(shè)計和使用有至關(guān)重要的作用。
[0003]對微處理器的軟件進行調(diào)試一般包括以下兩個方面的內(nèi)容:在軟件程序中設(shè)置斷點,使程序執(zhí)行到所設(shè)置的斷點位置時產(chǎn)生中斷并停止執(zhí)行;用戶可以對程序執(zhí)行單步操作或使之擺脫中斷狀態(tài)繼續(xù)往下執(zhí)行。
[0004]從上述內(nèi)容可以看出,斷點技術(shù)是微處理器的軟件調(diào)試中不可或缺并有決定性作用的技術(shù)。當前的斷點技術(shù)主要分為兩種:
[0005]第一種,硬件斷點的方案。這種技術(shù)采用若干個斷點寄存器來存儲斷點位置的指針,在微處理器執(zhí)行指令時,根據(jù)配置不斷將所執(zhí)行指令的指針與斷點寄存器中的斷點指針進行對比,當發(fā)生匹配時,產(chǎn)生中斷并凍結(jié)微處理器的流水線跳入特定程序段進行處理。這種硬件斷點的顯而易見的缺點就是,由于斷點寄存器的數(shù)量限制,硬件斷點只能實現(xiàn)數(shù)量有限的幾個斷點,在調(diào)試過程中會有很多的限制。
[0006]第二種,軟件多斷點方案。這技術(shù)當前使用非常廣泛,一般做法是將微處理器執(zhí)行的指令存儲器中的斷點位置的指令替換成斷點指令,并將斷點處的真實指令備份到另一個存儲器中,當微處理器執(zhí)行到斷點位置時,處理器流水線解析斷點位置處的指令,獲知該斷點位置處的指令為斷點指令后產(chǎn)生中斷,并凍結(jié)流水線跳入指定程序段進行處理,在產(chǎn)生中斷后使用高級語言來解析該斷點處的真實指令,利用PC++來使程序跳入斷點后一條指令開始執(zhí)行。上述軟件多斷點調(diào)試技術(shù)需要對斷點位置的真實指令進行備份,在替換回真實指令時需要高級語言來解析斷點處的真實指令,如此,實現(xiàn)該方案需要消耗大量額外的存儲空間來存儲備份斷點處的真實指令,還需要替換流水線中指令,實現(xiàn)困難。

【發(fā)明內(nèi)容】

[0007]為解決現(xiàn)有存在的問題,本發(fā)明實施例主要提供一種多斷點的軟件調(diào)試裝置和方法,簡單易行的實現(xiàn)了多斷點的軟件調(diào)試,同時節(jié)省了單板上的存儲資源。
[0008]本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
[0009]本發(fā)明提供了一種多斷點的軟件調(diào)試裝置,該軟件調(diào)試裝置包括:驅(qū)動器、微處理器、指令存儲器和微碼集成開發(fā)環(huán)境IDE ;其中,
[0010]所述驅(qū)動器,用于獲取軟件程序中的斷點信息,將所述斷點信息發(fā)送給指令存儲器,并根據(jù)指令存儲器中的斷點信息將斷點處的真實指令替換成斷點指令,在上報中斷給IDE后,根據(jù)IDE下發(fā)的命令將所述斷點指令換回真實指令,觸發(fā)微處理器解凍流水線,并在斷點指令執(zhí)行的間隙將斷點處的真實指令再次替換成斷點指令;
[0011]所述微處理器,用于當執(zhí)行到斷點指令時,通過驅(qū)動器上報中斷給IDE,凍結(jié)流水線,并根據(jù)驅(qū)動器的觸發(fā)解凍流水線,對斷點處的真實指令進行取指;
[0012]所述指令存儲器,用于存儲斷點指令和斷點信息;
[0013]所述IDE,用于為用戶提供下發(fā)命令的交互界面。
[0014]上述方案中,所述斷點信息包括斷點位置地址;所述斷點指令為原地跳轉(zhuǎn)指令;所述斷點指令執(zhí)行的間隙為斷點指令在原地執(zhí)行跳轉(zhuǎn)的任意兩次的間隙。
[0015]上述方案中,所述驅(qū)動器,還用于將來自所述IDE的命令解析成具體的寄存器或存儲器讀寫信號通過總線發(fā)送給所述微處理器和/或指令存儲器。
[0016]上述方案中,所述驅(qū)動器,還用于將斷點位置和斷點處的真實指令存儲到IDE所在的上位機。
[0017]上述方案中,所述微處理器包括:流水線和調(diào)試模塊;其中,
[0018]所述流水線,用于當執(zhí)行到斷點指令時,解析發(fā)現(xiàn)當前指令為斷點指令后向所述調(diào)試模塊發(fā)送通知,并在解凍后對斷點處的真實指令進行取指;
[0019]所述調(diào)試模塊,用于當接收到來自所述流水線的通知后,凍結(jié)流水線,上報中斷給驅(qū)動器,并根據(jù)驅(qū)動器的觸發(fā)解凍流水線。
[0020]上述方案中,所述調(diào)試模塊,具體用于當接收到來自所述流水線的通知后,產(chǎn)生停止信號來凍結(jié)流水線。
[0021]本發(fā)明還提供了一種多斷點的軟件調(diào)試方法,該軟件調(diào)試方法包括:
[0022]微碼集成開發(fā)環(huán)境IDE在軟件程序中設(shè)置斷點;
[0023]驅(qū)動器獲取軟件程序中的斷點信息,根據(jù)所述斷點信息將斷點處的真實指令替換成斷點指令;
[0024]當執(zhí)行到所述斷點指令時,微處理器上報中斷給IDE,并凍結(jié)流水線;
[0025]驅(qū)動器根據(jù)IDE下發(fā)的命令將所述斷點指令換回真實指令;
[0026]微處理器解凍流水線,對斷點處的真實指令進行取指;
[0027]驅(qū)動器在斷點指令執(zhí)行的間隙將斷點處的真實指令再次替換成斷點指令。
[0028]上述方案中,所述斷點信息包括斷點位置地址。
[0029]上述方案中的軟件調(diào)試方法還包括:驅(qū)動器將斷點位置和斷點處的真實指令存儲到IDE所在的上位機。
[0030]上述方案中,所述驅(qū)動器根據(jù)IDE下發(fā)的命令將所述斷點指令換回真實指令,微處理器解凍流水線,對斷點處的真實指令進行取指,驅(qū)動器在斷點指令執(zhí)行的間隙將斷點處的真實指令再次替換成斷點指令為:驅(qū)動器根據(jù)IDE下發(fā)的單步操作命令或繼續(xù)操作命令,將所述斷點指令換回真實指令,在換回真實指令時,微處理器解凍流水線,對斷點處的真實指令進行取指,在對所述真實指令取指完成后,在任意兩次執(zhí)行斷點指令的間隙將斷點處的真實指令再次替換成斷點指令。
[0031]本發(fā)明實施例提供了一種多斷點的軟件調(diào)試裝置和方法,微碼集成開發(fā)環(huán)境(IDE, Integrated Development Environment)在軟件程序中設(shè)置斷點,驅(qū)動器獲取軟件程序中的斷點信息,根據(jù)所述斷點信息將斷點處的真實指令替換成斷點指令,當執(zhí)行到所述斷點指令時,微處理器上報中斷給IDE,并凍結(jié)流水線,驅(qū)動器根據(jù)IDE下發(fā)的命令將所述斷點指令換回真實指令,微處理器解凍流水線,對斷點處的真實指令進行取指,驅(qū)動器在斷點指令執(zhí)行的間隙將斷點處的真實指令再次替換成斷點指令;如此,本申請利用斷點指令的特性和流水線凍結(jié)的空隙來完成替換指令的操作,不僅可以在指令存儲器中繼續(xù)保留斷點,而且不用額外增加單板上的存儲空間來存儲斷點位置的指令,節(jié)省大量的硬件存儲資源的同時也簡化了調(diào)試步驟。
【附圖說明】
[0032]圖1為本發(fā)明實施例提供的多斷點的軟件調(diào)試裝置的結(jié)構(gòu)示意圖
[0033]圖2為本發(fā)明實施例提供的軟件調(diào)試裝置中微處理器和指令存儲器的結(jié)構(gòu)示意圖;
[0034]圖3為本發(fā)明實施例提供的多斷點的軟件調(diào)試方法流程圖;
[0035]圖4為本發(fā)明實施例提供的斷點的軟件設(shè)置方法流程圖;
[0036]圖5為本發(fā)明實施例提供的執(zhí)行單步操作的流程圖;
[0037]圖6為本發(fā)明實施例提供的執(zhí)行繼續(xù)操作的流程圖。
【具體實施方式】
[0038]本發(fā)明實施例中,IDE在軟件程序中設(shè)置斷點;驅(qū)動器獲取軟件程序中的斷點信息,根據(jù)所述斷點信息將斷點處的真實指令替換成斷點指令;當執(zhí)行到所述斷點指令時,微處理器上報中斷給IDE,并凍結(jié)流水線;驅(qū)動器根據(jù)IDE下發(fā)的命令將所述斷點指令換回真實指令;微處理器解凍流水線,對斷點處的真實指令進行取指;驅(qū)動器在斷點指令執(zhí)行的間隙將斷點處的真實指令再次替換成斷點指令,通過上述方法來實現(xiàn)多斷點的軟件調(diào)試。
[0039]下面通過附圖及具體實施例對本發(fā)明做進一步的詳細說明;
[0040]本發(fā)明實施例提供的多斷點的軟件調(diào)試裝置的結(jié)構(gòu)如圖1所示,該軟件調(diào)試裝置包括:驅(qū)動器(Driver) 10、微處理器11、指令存儲器12和IDE13 ;其中,
[0041]所述驅(qū)動器10,用于獲取軟件程序中的斷點信息,將所述斷點信息發(fā)送給指令存儲器,并根據(jù)指令存儲器中的斷點信息將斷點處的真實指令替換成斷點指令,在上報中斷給IDE13后,根據(jù)IDE13下發(fā)的命令將所述斷點指令換回真實指令,觸發(fā)微處理器11解凍流水線,并在斷點指令執(zhí)行的間隙將斷點處的真實指令再次替換成斷點指令;
[0042]所述微處理器11,用于當執(zhí)行到所述斷點指令時,通過驅(qū)動器10上報中斷給IDE13,凍結(jié)流水線,并根據(jù)驅(qū)動器10的觸發(fā)解凍流水線,對斷點處的真實指令進行取指;
[0043]所述指令存儲器12,用于存儲斷點指令和斷點信息;
[0044]所述IDE13,用于為用戶提供下發(fā)命令的交互界面;
[0045]其中,所述斷點信息包括斷點位置地址;
[0046]所述斷點指令為原地跳轉(zhuǎn)指令,所述斷點指令執(zhí)行的間隙為斷點指令在原地執(zhí)行跳轉(zhuǎn)的任意兩次的間隙;
[0047]所述驅(qū)動器10,還用于將來自所述IDE13的命令解析成具體的寄存器或存儲器讀寫信號通過總線發(fā)送給所述微處理器11和/或指令存儲器12 ;所述命令包括:設(shè)置斷點命令以及執(zhí)行單步(Step)操作或繼續(xù)(Continue)操作等命令;
[0048]所述IDE13安裝在上位機上,在為微處理器11和或指令存儲器12下發(fā)命令后,所述驅(qū)動器10,還用于將斷點位置和斷點處的真實指令存儲到IDE13所在的上位機。
[0049]圖2所示為本發(fā)明實施例提供的微處理器11和指令存儲器12的結(jié)構(gòu)圖,如圖所示,所述微處理器11具體包括:流水線20和調(diào)試(Debug)模塊21 ;其中,
[0050]所述流水線20,用于當執(zhí)行到斷點指令時,解析發(fā)現(xiàn)當前指令為斷點指令后向所述調(diào)試模塊21發(fā)送通知,并在解凍后對斷點處的真實指令進行取指;
[0051]所述調(diào)試模塊21,用于當接收到來自所述流水線20的通知后,凍結(jié)流水線,上報中斷給驅(qū)動器10,并根據(jù)驅(qū)動器10的觸發(fā)解凍流水線;
[0052]所述調(diào)試模塊21,具體用于當接收到來自所述流水線20的通知后,產(chǎn)生停止(stall)信號來凍結(jié)流水線;
[0053]所述上位機上安裝的IDE13可以通過總線操作所述調(diào)試模塊21中的寄存器來解除流水線凍結(jié),從而使微處理器11可以執(zhí)行單步操作或繼續(xù)操作;
[0054]所述上位機上安裝的IDE13還可以通過總線來對指令存儲器12中存儲的指令內(nèi)容進行修改,所述指令存儲器12可以由SRAM組成。
[0055]本發(fā)明實施例提供一種多斷點的軟件調(diào)試方法,如圖3所示,該軟件調(diào)試方法包括以下步驟:
[0056]步驟301:在軟件程序中設(shè)置斷點;
[0057]具體的,調(diào)試開始后,用戶通過IDE在軟件程序中設(shè)置斷點,斷點的數(shù)量和位置由用戶根據(jù)需求來設(shè)定;
[0058]步驟302:驅(qū)動器獲取軟件程序中的斷點信息,根據(jù)所述斷點信息將斷點處的真實指令替換為斷點指令;<
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
南汇区| 泾阳县| 恩平市| 黄浦区| 庄河市| 沧州市| 墨竹工卡县| 云南省| 天祝| 定远县| 内丘县| 准格尔旗| 兰州市| 乌鲁木齐县| 彭州市| 桂阳县| 南岸区| 偃师市| 营口市| 临洮县| 鹤山市| 武威市| 乡宁县| 永善县| 策勒县| 嵊泗县| 遂平县| 兴安县| 苍溪县| 庐江县| 靖江市| 雷州市| 高平市| 陵水| 桃园县| 洪湖市| 潮安县| 纳雍县| 马边| 湖北省| 长海县|