亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于動態(tài)二進制翻譯的調(diào)試方法

文檔序號:6608194閱讀:289來源:國知局
專利名稱:用于動態(tài)二進制翻譯的調(diào)試方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種用于動態(tài)二進制翻譯的調(diào)試方法,用于在動態(tài)二進制翻譯器 中調(diào)試動態(tài)翻譯的代碼。本發(fā)明屬于二進制翻譯技術(shù)領(lǐng)域。
技術(shù)背景動態(tài)二進制翻譯是虛擬機技術(shù)中應(yīng)用最廣泛的一種方法,是解決遺留代碼 和提高軟件平臺適應(yīng)性的一種有效手段,它在不需要可執(zhí)行程序的源代碼的情 況下,可以動態(tài)地將源機器平臺上的二進制程序經(jīng)過轉(zhuǎn)換,運行于其他目標(biāo)機 器平臺上。為動態(tài)二進制翻譯平臺提供調(diào)試器, 一方面可以用來調(diào)試運行在其 上的程序,有助于程序的開發(fā),特別是當(dāng)該平臺用于模擬實際機器,來開發(fā)系 統(tǒng)程序如操作系統(tǒng)時,對于操作系統(tǒng)的開發(fā)有更大的促進作用,現(xiàn)代操作系統(tǒng) 的開發(fā)一般都是在模擬器中開發(fā)的,例如x86平臺的模擬器Bochs和Arm平臺 的模擬器Skyeye,其中一個主要原因就是模擬器提供了強大的調(diào)試支持,而這 正是實際機器無法提供的;另一方面也有利于發(fā)現(xiàn)動態(tài)二進制翻譯平臺本身的 實現(xiàn)錯誤?,F(xiàn)有動態(tài)二進制翻譯器提供了一定的調(diào)試支持,例如Tdb為動態(tài)翻譯程序 提供的一個源代碼級調(diào)試器,Qemu實現(xiàn)了 GDB的基本調(diào)試協(xié)議,Dynamo和 DynamoRIO實現(xiàn)了一個底層調(diào)試支持,還有Java的JPDA( Java平臺調(diào)試器架構(gòu)), 但這些調(diào)試器有一個共同缺點,所提供的功能過于簡單,只有設(shè)置斷點,單步, 執(zhí)行和査看寄存器與內(nèi)存等基本功能,其中Qemu和Dynamo的調(diào)試器僅適用于 它們自身的平臺,JPDA更是只為Java平臺JIT (Java語言編譯器)所設(shè)計。只 有這些基本功能的調(diào)試器的定位錯誤能力顯得有點不足,在程序中產(chǎn)生錯誤數(shù) 據(jù)的地方一般在程序失敗之前,這類調(diào)試器只能通過設(shè)置斷點,從后往前査找 錯誤之處,多次重新執(zhí)行程序來定位產(chǎn)生錯誤的地方,如果程序執(zhí)行時間較長 的話,這個過程將會消耗大量的時間?,F(xiàn)有具有回退執(zhí)行功能的調(diào)試器大都與語言緊密相關(guān),利用特殊的編譯支持來達到逆向執(zhí)行的目的,比如PROVIDE支持C語言程序的逆向執(zhí)行,但它只 支持C語言的一個子集,Cook只支持Java字節(jié)碼的回退執(zhí)行,這些方法在動態(tài) 二進制翻譯中都不適用。動態(tài)二進制翻譯器的一般執(zhí)行過程被執(zhí)行到的二進制程序由二進制翻譯器 以代碼塊為單位翻譯為本地代碼,翻譯好的本地代碼被存儲在代碼Cache中, 下一次被執(zhí)行到時就直接從代碼Cache中獲取翻譯好的本地代碼來執(zhí)行,要運 行的二進制代碼所對應(yīng)的本地代碼是動態(tài)生成的,其所在地址也是運行時分配 的,這使得現(xiàn)有調(diào)試靜態(tài)生成代碼的調(diào)試器無法調(diào)試運行在動態(tài)二進制翻譯平 臺上的程序。因此需要發(fā)明一種新的用于動態(tài)二進制翻譯的調(diào)試方法,用于在動態(tài)二進制 翻譯器中調(diào)試動態(tài)翻譯的代碼。 發(fā)明內(nèi)容本發(fā)明的目的在于針對現(xiàn)有技術(shù)的不足和動態(tài)二進制翻譯器的特點,提供 一種用于動態(tài)二進制翻譯的調(diào)試方法,提高程序員定位程序錯誤的速度,節(jié)省 執(zhí)行時間較長的程序的調(diào)試時間。為實現(xiàn)這一目的,本發(fā)明改進了通用調(diào)試器的斷點,單步執(zhí)行等基本功能, 使之更適合于動態(tài)二進制翻譯器的調(diào)試;改進觀察點功能用來監(jiān)視內(nèi)存的訪問 與讀寫,觀察程序在執(zhí)行時的內(nèi)部活動,在程序出錯時及時發(fā)現(xiàn)問題,定位錯 誤在程序中的位置;在動態(tài)二進制翻譯器的調(diào)試器引入回退執(zhí)行的新功能,采 用二進制級別的非精確回退執(zhí)行算法,回退執(zhí)行在二進制翻譯平臺中運行的任 意二進制代碼,以節(jié)省執(zhí)行時間較長的程序的調(diào)試時間。本發(fā)明的用于動態(tài)二進制翻譯的調(diào)試方法的具體步驟如下 1.通過斷點暫停源機器程序執(zhí)行利用動態(tài)二進制翻譯器運行源機器程序,當(dāng)在源機器程序中設(shè)置斷點暫停 源機器程序的執(zhí)行時,利用二進制翻譯器將斷點位置的源機器指令翻譯為目的 機器中的異常指令,在目的機器代碼的執(zhí)行過程中遇到該異常指令時就暫停執(zhí) 行,使用一個映射表支持源機器地址與物理機器動態(tài)地址的映射關(guān)系,通過査 找該映射表來確定源機器程序暫停的位置。2. 通過觀察點暫停源機器程序執(zhí)行當(dāng)在源機器程序中設(shè)置觀察點來跟蹤源機器程序變量值或表達式值的變化 時,二進制翻譯器在支持硬件內(nèi)存斷點的機器上通過內(nèi)存斷點來暫停程序執(zhí) 行,或者利用內(nèi)存映射過程來暫停程序執(zhí)行。3. 查看源機器程序在斷點處的運行狀態(tài)在源機器程序暫停位置,通過讀取模擬的源機器地址空間中的內(nèi)存數(shù)據(jù)和 模擬的中央處理單元寄存器的數(shù)據(jù),檢査源機器程序在斷點處運行結(jié)果是否正 確,如果運行結(jié)果不正確則記錄下錯誤在源機器程序中的位置,停止源機器程 序運行并對錯誤進行修正,然后返回步驟1繼續(xù)査找錯誤,直到在源機器程序 中査找不到錯誤為止,結(jié)束調(diào)試;如果運行結(jié)果正確,則繼續(xù)往下檢査源機器 程序。4. 繼續(xù)執(zhí)行源機器程序繼續(xù)檢查源機器程序時,采用逐條檢査或檢査下一個斷點或回退方式進行; 采用逐條檢査斷點之后源機器程序時,從暫停位置單步執(zhí)行源機器程序,二進 制翻譯器創(chuàng)建一個僅包含當(dāng)前指令的基本塊,然后執(zhí)行該基本塊,該基本塊執(zhí) 行結(jié)束后在源機器程序下一條指令處暫停,重復(fù)步驟3;采用檢査下一個斷點處 源機器程序運行狀態(tài)時,從當(dāng)前暫停位置繼續(xù)執(zhí)行源機器程序,遇到下一個斷 點時暫停源機器程序,重復(fù)步驟3;采用回退方式時,從暫停位置回退執(zhí)行源機 器程序,定義塊上下文數(shù)據(jù)結(jié)構(gòu)由程序寄存器當(dāng)前值、當(dāng)前棧頂?shù)臄?shù)據(jù)、該基 本塊所用到的全局地址和動態(tài)分配的內(nèi)存地址四部分組成,在基本塊執(zhí)行之前 將程序的運行狀態(tài)和機器狀態(tài)保存到該基本塊的塊上下文結(jié)構(gòu)中,且保存最近 被執(zhí)行到的基本塊的塊上下文鏈表且按執(zhí)行順序存放;二進制翻譯器從塊上下 文鏈表中取出最近被執(zhí)行的基本塊的塊上下文,根據(jù)該塊上下文將源機器狀態(tài) 和源機器程序狀態(tài)還原到執(zhí)行該基本塊之前的狀態(tài),然后利用單步執(zhí)行,執(zhí)行 到暫停位置的上一條指令為止,暫停源機器程序,重復(fù)步驟3。本發(fā)明的調(diào)試方法具有顯著的優(yōu)點。本發(fā)明改進了現(xiàn)有通用調(diào)試器的斷點, 單步等基本功能,使之更適合于動態(tài)二進制翻譯器的調(diào)試,并在這些基本功能 的基礎(chǔ)上,引入了回退執(zhí)行的新功能,能回退執(zhí)行在二進制翻譯平臺中運行的任意二進制代碼,節(jié)省了執(zhí)行時間較長的程序的調(diào)試時間;本發(fā)明改進的觀察 點功能用來監(jiān)視內(nèi)存的訪問與讀寫,比傳統(tǒng)調(diào)試器觀察點的實現(xiàn)方法復(fù)雜但功 能更強大,可以觀察程序在執(zhí)行時的內(nèi)部活動,在程序出錯時及時發(fā)現(xiàn)問題。 本發(fā)明大大提高了定位程序錯誤位置的速度,是虛擬機開發(fā)人員排錯定錯的有 力工具。
具體實施方式
為更好地理解本發(fā)明的技術(shù)方案,以下通過具體的實施例作進一步描述。 以下實施例不構(gòu)成對本發(fā)明的限定。動態(tài)二進制翻譯器中通用的調(diào)試器架構(gòu)一般具有斷點,單步,查看寄存器 與內(nèi)存值等基本功能,本發(fā)明在動態(tài)二進制翻譯器的調(diào)試器中實現(xiàn)了回退執(zhí)行, 觀察點與調(diào)試腳本的功能。 1.通過斷點暫停源機器程序執(zhí)行設(shè)置斷點是調(diào)試器的基本功能之一,在傳統(tǒng)調(diào)試器中,斷點可以分為"硬 件"斷點和"軟件"斷點兩大類,"硬件"斷點的實現(xiàn)需要處理器的特殊支持, 它的缺點是斷點數(shù)目有限,過分依賴于計算機體系結(jié)構(gòu);"軟件"斷點的實現(xiàn)一 般是將程序指令替換為陷入指令、非法的除法指令或者其它一些會產(chǎn)生異常的 指令,然后執(zhí)行到該地址之后,就會產(chǎn)生異常,再由調(diào)試器來處理該異常,例 如Linux下的調(diào)試器GDB和Windows的調(diào)試器OllyDbg都是采用這種方法。動 態(tài)二進制翻譯器的調(diào)試器一般采用軟件斷點方式,但與傳統(tǒng)的方法有所不同, 二進制翻譯器將源機器程序以代碼塊為單位翻譯成目的機器代碼,因此目的機 器代碼也是以代碼塊為單位生成的,它們的地址是動態(tài)的,在源機器代碼段中 設(shè)置斷點,翻譯后的目標(biāo)機器的可執(zhí)行代碼中也必須有相應(yīng)的斷點。首先利用動態(tài)二進制翻譯器運行源機器程序,動態(tài)二進制翻譯器將源程序 的代碼和數(shù)據(jù)段分別加載到本地地址空間,并對源機器地址與目標(biāo)機器地址進 行映射,二進制翻譯器用一個映射表來支持源機器程序地址與目標(biāo)機器動態(tài)地 址的映射關(guān)系,當(dāng)在源機器程序中設(shè)置斷點暫停源機器程序的執(zhí)行時,利用二 進制翻譯器將斷點位置的源機器指令翻譯為目的機器中的異常指令,在目的機器代碼的執(zhí)行過程中遇到該異常指令時就暫停執(zhí)行,通過査找上述映射表來確定源機器程序暫停的位置。2. 通過觀察點暫停源機器程序執(zhí)行觀察點是一種特殊的斷點,觀察點根據(jù)是否對內(nèi)存讀寫而暫停程序執(zhí)行,因 此可以在源機器程序中設(shè)置觀察點來跟蹤源機器程序變量值或表達式值的變 化,當(dāng)源機器程序變量值或表達式值的變化時,其相應(yīng)的內(nèi)存也發(fā)生變化,就 引發(fā)觀察而暫停程序執(zhí)行,觀察點可用來監(jiān)視程序內(nèi)存的訪問與讀寫。在動態(tài)二進制翻譯器中,必須將源機器狀態(tài)映射到目標(biāo)機器中,包括寄存器 映射和內(nèi)存映射,其中內(nèi)存映射為觀察點的實現(xiàn)增加了難度。本發(fā)明提供了兩 種實現(xiàn)觀察點的方法一、 在支持硬件內(nèi)存斷點的機器上,例如IA32,可以采用硬件內(nèi)存斷點暫 停源機器程序。當(dāng)在源機器程序中設(shè)置觀察點時,二進制翻譯器利用內(nèi)存映射 表將源機器的內(nèi)存地址轉(zhuǎn)換為目標(biāo)機器的內(nèi)存地址,然后在目標(biāo)機器相應(yīng)的內(nèi) 存地址上設(shè)置內(nèi)存斷點,當(dāng)源機器程序中被監(jiān)視的內(nèi)存發(fā)生改變時,就會在相 應(yīng)的目標(biāo)機器的內(nèi)存地址上產(chǎn)生異常,二進制翻譯器捕獲該異常暫停程序執(zhí)行。二、 利用內(nèi)存映射過程暫停源機器程序。動態(tài)二進制翻譯系統(tǒng)可以通過軟 件地址轉(zhuǎn)換緩的方式來實現(xiàn)內(nèi)存映射,二進制翻譯器使用一個表格記錄已設(shè)置 的觀察點,軟件地址轉(zhuǎn)換緩在翻譯過程中查找該表,如果有匹配項就說明某個 觀察點被觸發(fā)了, 二進制翻譯器就暫停源機器程序。第一種方法效率最高,但只能在特定機器上實現(xiàn);第二種方法只能在使用 了軟件地址轉(zhuǎn)換緩的二進制翻譯器上實現(xiàn)。3. 查看源機器程序在斷點處的運行狀態(tài)當(dāng)源機器程序暫停執(zhí)行后,從模擬的內(nèi)存地址空間中讀取數(shù)據(jù)和從模擬的 中央處理單元寄存器中讀取數(shù)據(jù),從而得到源機器程序的表達式值、程序變量 值、內(nèi)存值和寄存器值等,通過這些值來判斷源機器程序在斷點處運行結(jié)果是 否正確,如果運行結(jié)果不正確則記錄下錯誤在源機器程序中的位置,停止源機 器程序運行并對錯誤進行修正,然后返回步驟1繼續(xù)查找錯誤,直到在源機器 程序中査找不到錯誤為止,結(jié)束調(diào)試;如果運行結(jié)果正確,則繼續(xù)執(zhí)行源機器 程序。4.繼續(xù)執(zhí)行源機器程序從暫停位置繼續(xù)檢査源機器程序時,采用逐條檢查或檢查下一個斷點或回 退方式進行。1) 從暫停位置逐條執(zhí)行源機器程序當(dāng)逐條執(zhí)行源機器程序指令,以檢查單條指令的運行結(jié)果或跟蹤源機器程 序的執(zhí)行流程時,從暫停位置單步執(zhí)行源機器程序,這時二進制翻譯器創(chuàng)建一 個僅包含當(dāng)前指令的一個基本塊,然后翻譯并執(zhí)行該基本塊,該基本塊執(zhí)行結(jié) 束后暫停源機器程序的執(zhí)行,這時源機器程序暫停在下一條指令處,然后重復(fù) 步驟3。2) 檢查源機器程序中一個斷點當(dāng)檢査下一個斷點處源機器程序運行狀態(tài)時,從暫停位置繼續(xù)執(zhí)行源機器 程序,將控制權(quán)交給二進制翻譯器,二進制翻譯器續(xù)翻譯源機器程序,推動源機 器程序繼續(xù)執(zhí)行,直到遇到下一個斷點暫停源機器程序,然后重復(fù)步驟3。3) 從暫停位置回退執(zhí)行源機器程序當(dāng)檢査斷點之前的指令運行結(jié)果時,從暫停位置執(zhí)行回退。當(dāng)本發(fā)明實現(xiàn) 了一種非精確回退執(zhí)行源機器程序的方法。所謂非精確是指回退執(zhí)行在大部分 情況得到正確的結(jié)果,而某些情況下回退執(zhí)行得到的數(shù)據(jù)可能不正確,但它卻 可以大大提高調(diào)試過程的效率。回退執(zhí)行需要解決兩個難點問題 一是如何保存程序狀態(tài);二是確定當(dāng)前 指令的前驅(qū)指令地址,因為當(dāng)前指令不一定是順序執(zhí)行的結(jié)果,也可能是從某 個跳轉(zhuǎn)語句跳轉(zhuǎn)而來的。為了解決這兩個問題,本發(fā)明為每一基本塊保存一個 叫塊上下文的結(jié)構(gòu),它由四部分組成, 一是程序寄存器當(dāng)前值;二是當(dāng)前棧頂 數(shù)據(jù),在翻譯基本塊時,就能很容易地確定該基本塊訪問的堆棧內(nèi)存范圍,這 是因為對堆棧數(shù)據(jù)的訪問都是基于堆棧指針與??蛑羔樀模蝗窃摶緣K所用 到的全局地址,它以常數(shù)形式或者以全局寄存器加上常數(shù)地址形式使用;四是 動態(tài)分配的內(nèi)存地址。分為以下三步實現(xiàn)回退執(zhí)行a)將基本塊執(zhí)行之前的程序運行狀態(tài)保存到該基本塊的塊上下文結(jié)構(gòu)中, 并且保存最近被執(zhí)行到的基本塊的塊上下文結(jié)構(gòu)的鏈表,且按執(zhí)行順序存放。如果為每一條指令都保存程序狀態(tài)的話,會大量消耗時間與空間,其問題的根 源在于保存狀態(tài)的粒度太小。本發(fā)明實現(xiàn)了一種新的解決辦法——擴大保存粒 度,正向執(zhí)行。擴大保存粒度就是以基本塊為單位,只在基本塊執(zhí)行前保存程 序狀態(tài);正向執(zhí)行就是從前驅(qū)指令所在那個基本塊開始,逐條執(zhí)行, 一直到前 驅(qū)指令停止。本方法的難點在于確定基本塊內(nèi)會修改的內(nèi)存的地址,特別是對 于一些只有到執(zhí)行時才能確定地址的內(nèi)存,例如對局部變量的訪問就是通過堆 棧指針的簡單運算而得到的地址。當(dāng)檢測到這種指令時,就用該指令做為起點構(gòu)建新的基本塊。前一個基本塊執(zhí)行結(jié)束時,該指令所用到的內(nèi)存地址也就可 以計算出來,也就可以將之保存在塊上下文中。b) 確定當(dāng)前指令的前驅(qū)指令所在塊地址。二進制翻譯器保存了最近被執(zhí)行 到的基本塊的塊上下文結(jié)構(gòu),并且按執(zhí)行順序存放,那么前驅(qū)指令就在最近的 那個基本塊中。c) 回退執(zhí)行。二進制翻譯器從該鏈表中取出最近被執(zhí)行的基本塊,根據(jù)它 的塊上下文還原數(shù)據(jù),然后用單步執(zhí)行的方法執(zhí)行到前驅(qū)指令,然后重復(fù)步驟3。 由于基本塊較小,單步執(zhí)行所用的時間也比較少,每執(zhí)行一條指令就檢查一下 所修改的內(nèi)存地址,如果該地址不在保存的內(nèi)存行列,就提示用戶該地址的內(nèi) 存值可能不準(zhǔn)確,由用戶決定是否采用該結(jié)果;如果當(dāng)前指令恰好是該基本塊 的第一條指令,就將該基本塊從鏈表中刪除,重新取出最近的基本塊;如果程 序中出現(xiàn)循環(huán),可能會造成實際可逆向執(zhí)行的指令數(shù)大大減少,對此需做一定 的優(yōu)化在塊上下文管理中,增加了對循環(huán)的處理,如果連續(xù)保存的兩個塊上 下文屬于同一個基本塊,那么就將第二個舍棄,并在前一個塊上下文中記錄被 舍棄的數(shù)量,當(dāng)回退時,該基本塊必須被執(zhí)行相應(yīng)的次數(shù)。本發(fā)明的這種回退方法存在一定的局限性, 一是系統(tǒng)調(diào)用與IO操作無法恢 復(fù);二是不可無限制回退執(zhí)行,被稱為非精確回退執(zhí)行的原因就在于此。但本 發(fā)明提供回退執(zhí)行功能主要是為調(diào)試服務(wù),而不是提供完全的正確的逆向執(zhí)行 功能,因此本發(fā)明已經(jīng)足以滿足大部分程序的調(diào)試需求,這是逆向執(zhí)行與調(diào)試 目的的一個折衷。
權(quán)利要求
1、一種用于動態(tài)二進制翻譯的調(diào)試方法,其特征在于包括如下步驟1)利用動態(tài)二進制翻譯器運行源機器程序,當(dāng)在源機器程序中設(shè)置斷點暫停源機器程序的執(zhí)行時,利用二進制翻譯器將斷點位置的源機器指令翻譯為目的機器中的異常指令,在目的機器代碼的執(zhí)行過程中遇到該異常指令時就暫停執(zhí)行,使用一個映射表支持源機器地址與物理機器動態(tài)地址的映射關(guān)系,通過查找該映射表來確定源機器程序暫停的位置;2)當(dāng)在源機器程序中設(shè)置觀察點來跟蹤源機器程序變量值或表達式值的變化時,二進制翻譯器在支持硬件內(nèi)存斷點的機器上通過內(nèi)存斷點來暫停程序執(zhí)行,或者利用內(nèi)存映射過程來暫停程序執(zhí)行;3)在源機器程序暫停位置,通過讀取模擬的源機器地址空間中的內(nèi)存數(shù)據(jù)和模擬的中央處理單元寄存器的數(shù)據(jù),檢查源機器程序在斷點處運行結(jié)果是否正確,如果運行結(jié)果不正確則記錄下錯誤在源機器程序中的位置,停止源機器程序運行并對錯誤進行修正,然后返回步驟1)繼續(xù)查找錯誤,直到在源機器程序中查找不到錯誤為止,結(jié)束調(diào)試;如果運行結(jié)果正確,則繼續(xù)往下檢查源機器程序;4)繼續(xù)檢查源機器程序時,采用逐條檢查或檢查下一個斷點或回退方式進行;采用逐條檢查斷點之后源機器程序時,從暫停位置單步執(zhí)行源機器程序,二進制翻譯器創(chuàng)建一個僅包含當(dāng)前指令的基本塊,然后執(zhí)行該基本塊,該基本塊執(zhí)行結(jié)束后在源機器程序下一條指令處暫停,重復(fù)步驟3);采用檢查下一個斷點處源機器程序運行狀態(tài)時,從當(dāng)前暫停位置繼續(xù)執(zhí)行源機器程序,遇到下一個斷點時暫停源機器程序,重復(fù)步驟3);采用回退方式時,從暫停位置回退執(zhí)行源機器程序,定義塊上下文數(shù)據(jù)結(jié)構(gòu)由程序寄存器當(dāng)前值、當(dāng)前棧頂?shù)臄?shù)據(jù)、該基本塊所用到的全局地址和動態(tài)分配的內(nèi)存地址四部分組成,在基本塊執(zhí)行之前將程序的運行狀態(tài)和機器狀態(tài)保存到該基本塊的塊上下文結(jié)構(gòu)中,且保存最近被執(zhí)行到的基本塊的塊上下文鏈表且按執(zhí)行順序存放;二進制翻譯器從塊上下文鏈表中取出最近被執(zhí)行的基本塊的塊上下文,根據(jù)該塊上下文將源機器狀態(tài)和源機器程序狀態(tài)還原到執(zhí)行該基本塊之前的狀態(tài),然后利用單步執(zhí)行,執(zhí)行到暫停位置的上一條指令為止,暫停源機器程序,重復(fù)步驟3)。
全文摘要
本發(fā)明涉及一種用于動態(tài)二進制翻譯的調(diào)試方法,提供了一種適用于動態(tài)二進制翻譯器的調(diào)試方法。本發(fā)明改進了通用調(diào)試器的斷點,單步等基本功能,使之更適合于動態(tài)二進制翻譯器的調(diào)試;本發(fā)明改進的觀察點功能用來監(jiān)視內(nèi)存的訪問與讀寫,比傳統(tǒng)調(diào)試器觀察點的實現(xiàn)方法復(fù)雜但功能更強大,可以觀察程序在執(zhí)行時的內(nèi)部活動,在程序出錯時及時發(fā)現(xiàn)問題,定位錯誤在程序中的位置;本發(fā)明為動態(tài)二進制翻譯器的調(diào)試器引入了回退執(zhí)行的新功能,提出了一種二進制級別的非精確回退執(zhí)行算法,它能回退執(zhí)行在二進制翻譯平臺中運行的任意二進制代碼,節(jié)省了執(zhí)行時間較長的程序的調(diào)試時間,大大提高了程序員定位錯誤的速度,是虛擬機開發(fā)人員排錯定錯的有力工具。
文檔編號G06F9/45GK101241444SQ20081003374
公開日2008年8月13日 申請日期2008年2月21日 優(yōu)先權(quán)日2008年2月21日
發(fā)明者梁阿磊, 管海兵, 鄭舉育 申請人:上海交通大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1