两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種斷點(diǎn)調(diào)試方法和調(diào)試器的制作方法

文檔序號:6429173閱讀:245來源:國知局
專利名稱:一種斷點(diǎn)調(diào)試方法和調(diào)試器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)軟件設(shè)計(jì),尤其涉及一種斷點(diǎn)調(diào)試方法和調(diào)試器。
背景技術(shù)
調(diào)試器是處理器體系結(jié)構(gòu)設(shè)計(jì)與軟硬件協(xié)同驗(yàn)證中不可或缺的一部分。一方面, 它在軟件層次上對目標(biāo)處理器的體系結(jié)構(gòu)進(jìn)行建模來模擬其執(zhí)行行為,另一方面,通過提供調(diào)試接口,接收用戶輸入的各種控制信息,實(shí)現(xiàn)對程序執(zhí)行過程中的數(shù)據(jù)流、控制流的監(jiān)測及修改。調(diào)試器最基礎(chǔ)、最核心的功能之一是斷點(diǎn)功能,它可以讓程序中斷在需要的地方, 從而方便其分析。斷點(diǎn)又可以分為行斷點(diǎn)和條件斷點(diǎn)兩種,且以用戶輸入的條件斷點(diǎn)為主?,F(xiàn)有技術(shù)的調(diào)試器一般采用表達(dá)式計(jì)算來實(shí)現(xiàn)條件斷點(diǎn)的解析,而表達(dá)式計(jì)算一般采用如下兩種方案進(jìn)行處理第一種方案其于棧結(jié)構(gòu)的表達(dá)式計(jì)算,以后綴表達(dá)式a+b*c > (d*e+f)*g為例, 首先將后綴表達(dá)式利用棧操作生成中綴表達(dá)式abc*+de*f+g* >,按a,b,c*,+,d,e, *,f, +,g,*,>的順序依次壓棧,在壓棧過程中,遇到有效操作符的時(shí)候,按照操作符所需要操作數(shù)的個(gè)數(shù),從棧中彈出相應(yīng)個(gè)數(shù),計(jì)算后將結(jié)果再次壓入棧中。例如,當(dāng)壓入操作符*的時(shí)候,需要將操作數(shù)c和b依次彈出棧,并計(jì)算b*c后將結(jié)果再壓入到棧中。具體過程如圖1 所示。第二種方案基于語義二叉樹結(jié)構(gòu)的表達(dá)式計(jì)算,按字符的優(yōu)先級組織成二叉樹結(jié)構(gòu),計(jì)算時(shí)應(yīng)用深度優(yōu)先搜索算法從二叉樹的底層從左至右,從下至上依次進(jìn)行計(jì)算。以第一種方案中的后綴表達(dá)式為例,處理的二叉樹結(jié)構(gòu)如圖2所示?,F(xiàn)有技術(shù)上述兩種方案存在的缺點(diǎn)是只能處理有限的固定模式,應(yīng)用面窄,當(dāng)通過調(diào)試接口輸入條件斷點(diǎn)信息時(shí),繁瑣的表達(dá)式計(jì)算會(huì)嚴(yán)重影響調(diào)試器的執(zhí)行效率,嚴(yán)重影響調(diào)試器性能。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種執(zhí)行效率高且穩(wěn)定可靠的斷點(diǎn)調(diào)試方法和調(diào)試器,來解決斷點(diǎn)信息中繁瑣的表達(dá)式計(jì)算問題,從而大幅提高了調(diào)試器的執(zhí)行效率。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種斷點(diǎn)調(diào)試方法,其特征在于包括以下步驟接收調(diào)試中的斷點(diǎn)信息;將所述斷點(diǎn)信息組合成斷點(diǎn)函數(shù)并輸出;加載動(dòng)態(tài)鏈接庫,所述動(dòng)態(tài)鏈接庫由所述斷點(diǎn)函數(shù)進(jìn)行編譯生成。本發(fā)明還提供了一種調(diào)試器,其特征在于包括接收單元,用于接收調(diào)試中的斷點(diǎn)信息;輸出單元,用于將所述斷點(diǎn)信息組合成斷點(diǎn)函數(shù)并輸出;加載單元,用于加載所述動(dòng)態(tài)鏈接庫。
本發(fā)明實(shí)施例的斷點(diǎn)調(diào)試方法和調(diào)試器,通過將調(diào)試器接收的斷點(diǎn)信息組合成函數(shù)并進(jìn)行編譯,生成供調(diào)試器加載調(diào)用,并執(zhí)行的動(dòng)態(tài)鏈接庫中的函數(shù),解決了調(diào)試器處理繁瑣的條件斷點(diǎn)表達(dá)式時(shí)遇到的執(zhí)行效率低下問題,從而大幅提升調(diào)試器的執(zhí)行效率。


圖1為現(xiàn)有技術(shù)的基于棧結(jié)構(gòu)的表達(dá)式計(jì)算;圖2為現(xiàn)有技術(shù)的基于語義二叉樹結(jié)構(gòu)的表達(dá)式計(jì)算;圖3為本發(fā)明一實(shí)施例的斷點(diǎn)調(diào)試方法流程圖;圖4為本發(fā)明一實(shí)施例的調(diào)試器示意結(jié)構(gòu)圖;圖5示意性示出了一種斷點(diǎn)調(diào)試方法的處理系統(tǒng)。
具體實(shí)施例方式下面通過附圖和實(shí)施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。圖3為本發(fā)明一實(shí)施例的斷點(diǎn)調(diào)試方法流程圖。在步驟301,接收調(diào)試中的斷點(diǎn)信息。調(diào)試器在調(diào)試中接收來自用戶設(shè)置的斷點(diǎn)信息,例如,用戶設(shè)置的條件斷點(diǎn)信息。 調(diào)試器將所有在調(diào)試中接收到的斷點(diǎn)信息存儲(chǔ)在斷點(diǎn)緩沖器中。在步驟302,對所述斷點(diǎn)信息組合成斷點(diǎn)函數(shù)并輸出。調(diào)試器在接收斷點(diǎn)信息完成后,將存儲(chǔ)在斷點(diǎn)緩沖器中的斷點(diǎn)信息組合成斷點(diǎn)函數(shù)并輸出。在一個(gè)實(shí)施例中,調(diào)試器將存儲(chǔ)在斷點(diǎn)緩沖器中的全部條件斷點(diǎn)信息和需要變量進(jìn)程地址組合成斷點(diǎn)函數(shù)并輸出,上述輸出可以是輸出到C語言文件中。輸出的C語言文件的組織形式如下#define variable process—address…_declspec(dllexport)int_stdcall breakpoints_test(void){if(breakpint_expression_l)return 1 ;if(breakpint_expression_l)return2 ;…if(breakpint_expression_n)return η ;}其中各條件斷點(diǎn)由if語句包裝,在c語言級別上,當(dāng)其中某一條件斷點(diǎn)滿足時(shí),則返回相應(yīng)的條件斷點(diǎn)編號,調(diào)試器暫停執(zhí)行。例如,上述語句“breakpintexpressiorul”為條件斷點(diǎn)表達(dá)式,其條件斷點(diǎn)編號為1,語句“return 1”為返回編號為1的條件斷點(diǎn)。當(dāng)條件斷點(diǎn)表達(dá)式1滿足條件時(shí),則返回到編號為1的條件斷點(diǎn)處,調(diào)試器暫停執(zhí)行。在步驟303,對所述斷點(diǎn)函數(shù)進(jìn)行編譯,生成動(dòng)態(tài)鏈接庫。當(dāng)C語言文件輸出成功后,調(diào)試器調(diào)用第三方編譯器將步驟302中輸出的C語言文件進(jìn)行編譯、匯編和鏈接,最后形成動(dòng)態(tài)鏈接庫(DLL)。在一個(gè)實(shí)施例中,調(diào)試器調(diào)用C語言編譯器對輸出的C語言文件進(jìn)行編譯、匯編和鏈接,形成DLL。在步驟304,加載所述動(dòng)態(tài)鏈接庫。調(diào)試器加載在步驟303中形成的動(dòng)態(tài)鏈接庫,加載后的動(dòng)態(tài)鏈接庫可供調(diào)試器調(diào)用,調(diào)試器在對斷點(diǎn)的判斷時(shí)可直接調(diào)用函數(shù)breakpointsJestO。調(diào)試器在加載目標(biāo)動(dòng)態(tài)鏈接庫后,該動(dòng)態(tài)鏈接庫和調(diào)試器將共享同一段進(jìn)程空間,而對斷點(diǎn)條件判斷執(zhí)行中的各變量均可歸結(jié)到從固定地址取固定長度的數(shù)據(jù)進(jìn)行處理。以條件斷點(diǎn)insncounter >=10為例,相應(yīng)的聲明代碼如下所示#define address_register_fille
*(unsigned long*)0x008a3138#define data_register_fille
*(unsigned long氺)0x009a3138…#define insncounter*(_ _int64氺)0x010a3138上述聲明代碼中,條件斷點(diǎn)insncounter > = 10的有符號變量insncounter在進(jìn)程空間中的地址為0x010a3138,因此條件斷點(diǎn)insncounter > = 10直接等價(jià)于*(_ _ int64*)0x010a3138 >= 10。圖4為本發(fā)明一實(shí)施例的調(diào)試器示意結(jié)構(gòu)圖。如圖所示40表示調(diào)試器,41表示接收單元,42表示存儲(chǔ)單元,43表示輸出單元,44表示加載單元,45表示執(zhí)行單元,以及46 表示斷點(diǎn)緩沖器。接收單元41用于接收調(diào)試中的斷點(diǎn)信息。存儲(chǔ)單元42用于存儲(chǔ)在調(diào)試中接收到的斷點(diǎn)信息。輸出單元43用于將所述斷點(diǎn)信息組合成斷點(diǎn)函數(shù)并輸出。加載單元44用于加載動(dòng)態(tài)鏈接庫。調(diào)試器40的接收單元41接收來自用戶設(shè)置的斷點(diǎn)信息,例如,用戶設(shè)置的條件斷點(diǎn)信息。調(diào)試器40將所有在調(diào)試中接收到的斷點(diǎn)信息通過存儲(chǔ)單元42存儲(chǔ)在斷點(diǎn)緩沖器 46中。在調(diào)試器40接收斷點(diǎn)信息完成后,將存儲(chǔ)在斷點(diǎn)緩沖器46中的斷點(diǎn)信息組合成斷點(diǎn)函數(shù)并通過輸出單元43輸出。其中,調(diào)試器40將斷點(diǎn)緩沖器46中的條件斷點(diǎn)信息組合成斷點(diǎn)函數(shù)并輸出到C語言文件中,另外,將斷點(diǎn)緩沖器46中的條件斷點(diǎn)信息組合成斷點(diǎn)函數(shù)并輸出到C語言文件中的同時(shí)將所需要變量進(jìn)程地址也一起輸出到C語言文件中。通過C語言編譯器對C語言文件進(jìn)行編譯、匯編和鏈接后形成的動(dòng)態(tài)鏈接庫G)LL)由調(diào)試器 40的加載單元44進(jìn)行加載,加載后的動(dòng)態(tài)鏈接庫可供調(diào)試器40的執(zhí)行單元45進(jìn)行調(diào)用并判斷執(zhí)行。由此可以看出,本發(fā)明實(shí)施例的斷點(diǎn)調(diào)試方法和調(diào)試器采用第三方編譯器對條件斷點(diǎn)的函數(shù)進(jìn)行編譯,并在經(jīng)匯編和鏈接后生成動(dòng)態(tài)鏈接庫的方式來解決斷點(diǎn)信息中繁瑣的表達(dá)式計(jì)算問題,從而大幅提高了調(diào)試器的執(zhí)行效率。圖5示意性示出了一種斷點(diǎn)調(diào)試方法的處理系統(tǒng)。圖3中所示的斷點(diǎn)調(diào)試方法可以在該系統(tǒng)中實(shí)現(xiàn)。圖5中所示的處理系統(tǒng)包括CPU(中央處理器)501,RAM(隨機(jī)存取器)502,R0M(只讀存儲(chǔ)器)503,系統(tǒng)總線504,硬盤控制器505,鼠標(biāo)控制器506,鍵盤控制器507,顯示器控制器508,硬盤509,鼠標(biāo)510,鍵盤512,顯示器513。在這些部件中,與系統(tǒng)總線504相連的有CPTOO1、RAM502、R0M503、硬盤控制器505,鼠標(biāo)控制器506,鍵盤控制器507和顯示器控制器508。硬盤509與硬盤控制器505相連,鼠標(biāo)510與鼠標(biāo)控制器506 相連,鍵盤512與鍵盤控制器507相連,以及顯示器513與顯示器控制器508相連。圖5中每個(gè)部件的功能在本技術(shù)領(lǐng)域內(nèi)都是眾所周知的,并且圖5所示的結(jié)構(gòu)也是常規(guī)的。通常作為軟件存儲(chǔ)在硬盤509中的計(jì)算機(jī)可讀指令控制。在圖3中所示的流程圖的基礎(chǔ)上,對于一個(gè)技術(shù)領(lǐng)域內(nèi)熟練的技術(shù)人員無需創(chuàng)造性的工作即可開發(fā)出一個(gè)或更多的軟件,這樣開發(fā)出的軟件將執(zhí)行圖3所示的斷點(diǎn)調(diào)試方法。專業(yè)人員應(yīng)該還可以進(jìn)一步意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。 這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。 專業(yè)技術(shù)人員可以對每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。以上所述的具體實(shí)施方式
,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施方式
而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種斷點(diǎn)調(diào)試方法,其特征在于,所述方法包括接收調(diào)試中的斷點(diǎn)信息;將所述斷點(diǎn)信息組合成斷點(diǎn)函數(shù)并輸出;加載動(dòng)態(tài)鏈接庫,所述動(dòng)態(tài)鏈接庫由所述斷點(diǎn)函數(shù)進(jìn)行編譯生成。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于所述接收調(diào)試中的斷點(diǎn)信息包括接收調(diào)試中的條件斷點(diǎn)信息。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于所述接收調(diào)試中的斷點(diǎn)信息步驟后還包括將接收的斷點(diǎn)信息存儲(chǔ)在斷點(diǎn)緩沖器中。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于將所述斷點(diǎn)信息組合成斷點(diǎn)函數(shù)并輸出步驟還包括將變量進(jìn)程地址和所述斷點(diǎn)函數(shù)一起輸出。
5.根據(jù)權(quán)利要求1或4所述的方法,其特征在于所述輸出是輸出到C語言文件中。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于所述動(dòng)態(tài)鏈接庫由所述斷點(diǎn)函數(shù)進(jìn)行編譯生成步驟包括通過編譯器對所述斷點(diǎn)函數(shù)進(jìn)行編譯,匯編和鏈接,生成動(dòng)態(tài)鏈接庫。
7.—種調(diào)試器,其特征在于,所述調(diào)試器包括接收單元,用于接收調(diào)試中的斷點(diǎn)信息;輸出單元,用于將所述斷點(diǎn)信息組合成斷點(diǎn)函數(shù)并輸出;加載單元,用于根據(jù)所述斷點(diǎn)函數(shù)編譯生成動(dòng)態(tài)鏈接庫,并加載所述動(dòng)態(tài)鏈接庫。
8.根據(jù)權(quán)利要求7所述的調(diào)試器,其特征在于所述接收單元包括用于接收調(diào)試中的條件斷點(diǎn)信息。
9.根據(jù)權(quán)利要求7所述的調(diào)試器,其特征在于所述調(diào)試器還包括存儲(chǔ)單元,用于存儲(chǔ)所述接收的斷點(diǎn)信息。
10.根據(jù)權(quán)利要求7所述的調(diào)試器,其特征在于所述輸出單元包括用于將變量進(jìn)程地址和所述斷點(diǎn)函數(shù)一起輸出。
11.根據(jù)權(quán)利要求7或10所述的調(diào)試器,其特征在于所述輸出單元輸出是輸出到C語言文件中。
全文摘要
本發(fā)明涉及一種斷點(diǎn)調(diào)試方法和調(diào)試器。所述斷點(diǎn)調(diào)試方法包括以下步驟接收調(diào)試中的斷點(diǎn)信息;將所述斷點(diǎn)信息組合成斷點(diǎn)函數(shù)并輸出;加載動(dòng)態(tài)鏈接庫,所述動(dòng)態(tài)鏈接庫由所述斷點(diǎn)函數(shù)進(jìn)行編譯生成。所述調(diào)試器包括接收單元,用于接收調(diào)試中的斷點(diǎn)信息;輸出單元,用于將所述斷點(diǎn)信息組合成斷點(diǎn)函數(shù)并輸出;加載單元,用于加載動(dòng)態(tài)鏈接庫。根據(jù)本發(fā)明的調(diào)試方法和調(diào)試器,可以大幅提升調(diào)試器的執(zhí)行效率。
文檔編號G06F11/36GK102262587SQ20111020745
公開日2011年11月30日 申請日期2011年7月22日 優(yōu)先權(quán)日2011年7月22日
發(fā)明者侯朝煥, 彭楚, 朱浩, 洪纓, 王東輝 申請人:中國科學(xué)院聲學(xué)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
舒兰市| 贡嘎县| 随州市| 毕节市| 元谋县| 什邡市| 晋宁县| 井研县| 洛隆县| 凤翔县| 获嘉县| 镇原县| 永善县| 沈丘县| 屏东市| 平和县| 茌平县| 博爱县| 隆尧县| 馆陶县| 台南县| 崇礼县| 横峰县| 安平县| 澎湖县| 萨迦县| 海盐县| 吉林省| 天等县| 平潭县| 扎赉特旗| 惠州市| 石屏县| 贵定县| 同江市| 长兴县| 古浪县| 渑池县| 奎屯市| 宣化县| 普安县|