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

一種內(nèi)存異常訪問(wèn)定位方法及裝置的制作方法

文檔序號(hào):6483126閱讀:259來(lái)源:國(guó)知局
專利名稱:一種內(nèi)存異常訪問(wèn)定位方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種內(nèi)存異常訪問(wèn)定位方法及裝置。
背景技術(shù)
MIPS ( Microprocessor without Interlocked Pipeline Stages,無(wú)內(nèi)部互鎖流水 級(jí)的微處理器)是一種CPU體系架構(gòu),釆用MIPS架構(gòu)的CPU稱為MIPS CPU。 MIPS CPU在寬帶設(shè)備、無(wú)線網(wǎng)絡(luò)、便攜游戲機(jī)、數(shù)碼相機(jī)、數(shù)字電視等領(lǐng)域 有著廣泛的應(yīng)用。
MIPS CPU在開(kāi)發(fā)調(diào)度階段,會(huì)存在內(nèi)存異常訪問(wèn)問(wèn)題,所謂內(nèi)存異常訪 問(wèn)是指在程序運(yùn)行過(guò)程中,某一條指令(或某一段代碼)對(duì)內(nèi)存的讀寫超出了 正常讀寫范圍,對(duì)其它不屬于正常讀寫范圍的內(nèi)存進(jìn)行了修改, 一般都跟內(nèi)存 越界、內(nèi)存泄露等問(wèn)題有關(guān)。在發(fā)生內(nèi)存異常訪問(wèn)現(xiàn)象時(shí),程序剛開(kāi)始運(yùn)行時(shí) 往往是正常的,但在運(yùn)行過(guò)程中,當(dāng)有指令想正常讀寫存在異常訪問(wèn)現(xiàn)象的內(nèi) 存區(qū)域時(shí),由于這片區(qū)域因?yàn)楫惓TL問(wèn)問(wèn)題已被非法修改過(guò),因此程序?qū)?huì)出 錯(cuò)。由于這個(gè)原因,內(nèi)存異常訪問(wèn)現(xiàn)象有著隱蔽性強(qiáng)、難以定位等特點(diǎn)。
現(xiàn)有技術(shù)一般通過(guò)配置WATCH寄存器組或JTAG寄存器組監(jiān)視內(nèi)存地址 來(lái)對(duì)內(nèi)存異常訪問(wèn)進(jìn)行查找定位,以利用WATCH寄存器為例,參見(jiàn)圖1,包 括如下步驟
1) 配置寄存器組,用于捕獲訪問(wèn)行為;
2) 系統(tǒng)正常執(zhí)行;
3) 對(duì)監(jiān)視的內(nèi)存地址發(fā)生訪問(wèn)時(shí),保存寄存器組; 通過(guò)保存寄存器組可以查看產(chǎn)生訪問(wèn)的指令。
4) 復(fù)位系統(tǒng)。
發(fā)明人在實(shí)現(xiàn)本發(fā)明過(guò)程中,發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下缺點(diǎn) 在對(duì)監(jiān)視的內(nèi)存地址發(fā)生訪問(wèn)時(shí),系統(tǒng)會(huì)產(chǎn)生異常,處理完異常返回后, 程序會(huì)繼續(xù)執(zhí)行產(chǎn)生異常的指令,從而再次進(jìn)入異常,如此循環(huán)反復(fù),只能復(fù)位系統(tǒng),不能繼續(xù)對(duì)訪問(wèn)指令進(jìn)行捕獲及分析。同時(shí),由于內(nèi)存異常訪問(wèn)現(xiàn)象 發(fā)生的概率很低,而在實(shí)際中,對(duì)被監(jiān)視的內(nèi)存地址進(jìn)行的訪問(wèn)在大多數(shù)情況 下都是正常的訪問(wèn),這時(shí),現(xiàn)有技術(shù)中分析查看的指令往往都是正常的指令, 從而無(wú)法對(duì)引起內(nèi)存異常訪問(wèn)現(xiàn)象的非法訪問(wèn)指令進(jìn)行有效定位。

發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種內(nèi)存異常訪問(wèn)定位方法及裝置,用于對(duì)內(nèi)存異常訪
問(wèn)現(xiàn)象進(jìn)行有效定位,通過(guò)以下方案來(lái)實(shí)現(xiàn) 監(jiān)視出現(xiàn)異常訪問(wèn)的內(nèi)存,捕獲訪問(wèn)行為;
根據(jù)所述訪問(wèn)行為獲取訪問(wèn)指令,通過(guò)所述訪問(wèn)指令對(duì)所述訪問(wèn)行為進(jìn)行 定位;
分析所述訪問(wèn)指令,得到分析結(jié)果; 根據(jù)所述分析結(jié)果,代替所述訪問(wèn)指令完成相應(yīng)的動(dòng)作。 以及,
監(jiān)視單元,用于監(jiān)視出現(xiàn)異常訪問(wèn)的內(nèi)存,捕獲訪問(wèn)行為; 獲取單元,用于根據(jù)所述訪問(wèn)行為獲取訪問(wèn)指令,通過(guò)所述訪問(wèn)指令對(duì)所 述訪問(wèn)^亍為進(jìn)4亍定4立;
分析單元,用于分析所述訪問(wèn)指令,得到分析結(jié)果;
代替單元,用于根據(jù)所述分析結(jié)果,代替所述訪問(wèn)指令完成相應(yīng)的動(dòng)作。
上述技術(shù)方案中具有如下的優(yōu)點(diǎn)
通過(guò)不斷查看訪問(wèn)指令,分析訪問(wèn)指令,能夠有效及時(shí)地對(duì)內(nèi)存異常訪問(wèn) 進(jìn)行定位;并代替訪問(wèn)指令完成相應(yīng)的動(dòng)作,避免了需要復(fù)位系統(tǒng)的情況,使 得程序能夠繼續(xù)執(zhí)行,從而可以不斷對(duì)內(nèi)存異常訪問(wèn)進(jìn)行定位。


為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的^支術(shù)方案,下面將對(duì)實(shí)施 例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述 中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付 出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明方法實(shí)施例流程示意圖2為本發(fā)明方法實(shí)施例流程示意圖; 圖3為本發(fā)明裝置實(shí)施例結(jié)構(gòu)示意圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下將通過(guò)具體實(shí)施 例和相關(guān)附圖,對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明。
本發(fā)明實(shí)施例提供了 一種內(nèi)存異常訪問(wèn)定位方法,用于有效地對(duì)內(nèi)存異常 訪問(wèn)進(jìn)行定位,參見(jiàn)圖l,包括如下步驟
5101、 監(jiān)視出現(xiàn)異常訪問(wèn)的內(nèi)存,捕獲訪問(wèn)行為;
可以通過(guò)配置相關(guān)寄存器組(如WATCH寄存器組或JTAG寄存器組)來(lái)監(jiān) 視出現(xiàn)異常訪問(wèn)的內(nèi)存,當(dāng)有指令對(duì)被監(jiān)視的內(nèi)存進(jìn)行訪問(wèn)時(shí),捕獲這些指令 的i方問(wèn)4亍為。
5102、 根據(jù)所述訪問(wèn)行為獲取訪問(wèn)指令,通過(guò)所述訪問(wèn)指令對(duì)所述訪問(wèn)行 為進(jìn)行定位;
當(dāng)通過(guò)配置WATCH寄存器組來(lái)監(jiān)視內(nèi)存時(shí),可以通過(guò)查詢EPC寄存器獲 取所述訪問(wèn)指令;或者,
當(dāng)通過(guò)配置JTAG寄存器組來(lái)監(jiān)視內(nèi)存時(shí),可以通過(guò)查詢DEPC寄存器獲取 所述訪問(wèn)指令。
5103、 分析所述訪問(wèn)指令,得到分析結(jié)果;
分析執(zhí)行所述訪問(wèn)指令時(shí),所述訪問(wèn)指令會(huì)對(duì)寄存器和/或內(nèi)存產(chǎn)生影響的 特征,可以對(duì)以下至少一個(gè)方面進(jìn)行分析 確定訪問(wèn)指令的類型; 分析訪問(wèn)指令所操作的位寬; 分析是否使用了寄存器的偏移量; 檢查訪問(wèn)指令是否在延遲槽等。
5104、 根據(jù)分析后的結(jié)果,代替所述訪問(wèn)指令完成相應(yīng)的動(dòng)作。
具體地,根據(jù)分析后的結(jié)果修改與完成所述訪問(wèn)指令動(dòng)作相關(guān)的寄存器和 /或內(nèi)存,使得能夠代替所述訪問(wèn)指令完成相應(yīng)的動(dòng)作,使得程序能夠繼續(xù)執(zhí)行。本發(fā)明實(shí)施例還可以包括
分析獲取所述訪問(wèn)指令的訪問(wèn)次數(shù),根據(jù)所述訪問(wèn)次數(shù)從少到多的次序查
看所述訪問(wèn)指令,能夠更快地對(duì)內(nèi)存異常訪問(wèn)進(jìn)行定位;因?yàn)楫惓TL問(wèn)發(fā)生的 概率很低,有多次訪問(wèn)的通常是正常訪問(wèn)行為。
本發(fā)明實(shí)施例通過(guò)不斷查看訪問(wèn)指令,分析訪問(wèn)指令,能夠有效及時(shí)地對(duì) 內(nèi)存異常訪問(wèn)進(jìn)行定位;并代替訪問(wèn)指令完成相應(yīng)的動(dòng)作,避免了需要復(fù)位系 統(tǒng)的情況,使得程序能夠繼續(xù)執(zhí)行,從而可以不斷對(duì)內(nèi)存異常訪問(wèn)進(jìn)行定位。 同時(shí),從訪問(wèn)次數(shù)從少到多的次序查看訪問(wèn)指令,能夠更快地對(duì)內(nèi)存異常訪問(wèn) 進(jìn)行定位。
參見(jiàn)圖2,為本發(fā)明另一實(shí)施例流程圖,包括以下步驟
5201、 監(jiān)視出現(xiàn)異常訪問(wèn)的內(nèi)存,捕獲訪問(wèn)行為;
出現(xiàn)異常訪問(wèn)的內(nèi)存區(qū)域?yàn)槭孪人_定的,為了對(duì)內(nèi)存異常訪問(wèn)進(jìn)行定 位,需要通過(guò)監(jiān)視出現(xiàn)異常訪問(wèn)的內(nèi)存,以捕獲訪問(wèn)行為,即有哪些指令訪問(wèn) 了這塊內(nèi)存。
監(jiān)視出現(xiàn)異常訪問(wèn)的內(nèi)存需要對(duì)相關(guān)寄存器組進(jìn)行配置,以便在發(fā)生內(nèi)存 訪問(wèn)時(shí)捕獲訪問(wèn)行為,這里的訪問(wèn)行為可以包括對(duì)內(nèi)存的讀寫,或者諸如取指 令等一些執(zhí)行動(dòng)作。上述相關(guān)寄存器組可以是WATCH寄存器組或JTAG寄存器 組,例如可以設(shè)置WATCH寄存器組中WATCHLO和WATCHHI寄存器,然后 進(jìn)行監(jiān)視。當(dāng)滿足指定的訪問(wèn)策略,CPU會(huì)將Cause Register (觸發(fā)寄存器)中 的ExcCode字段設(shè)置為23,表示出現(xiàn)指定的訪問(wèn)行為,并跳轉(zhuǎn)到異常處理代碼 段,由此便捕獲了訪問(wèn)行為。其中,異常處理代碼段為事先定義添加的一段代 碼,其具體實(shí)現(xiàn)可才艮據(jù)程序的需要而不同,如可以對(duì)內(nèi)存訪問(wèn)異?;駽ache異 常等進(jìn)行一些處理等。
5202、 獲取訪問(wèn)指令,得到指令地址;
訪問(wèn)指令是指訪問(wèn)被監(jiān)視的內(nèi)存的指令。在步驟S 101中捕獲訪問(wèn)行為時(shí), 需要獲取這些產(chǎn)生訪問(wèn)行為的訪問(wèn)指令的地址。獲取訪問(wèn)指令的地址可以通過(guò)
可以通過(guò)查詢EPC寄存器來(lái)得到。EPC寄存器是一個(gè)64位寄存器,保存著程序在一個(gè)異常后繼續(xù)執(zhí)行的地址,在發(fā)生訪問(wèn)行為時(shí),EPC寄存器中的值就是引
起訪問(wèn)行為的指令地址。通過(guò)如果使用JTAG寄存器組來(lái)對(duì)訪問(wèn)行為進(jìn)行捕獲 時(shí),則可以通過(guò)查詢DEPC寄存器來(lái)得到指令的地址。
5203、 獲取訪問(wèn)指令訪問(wèn)次數(shù);
在捕獲的訪問(wèn)行為中, 一些訪問(wèn)是引起內(nèi)存異常訪問(wèn)的非正常訪問(wèn);而多 數(shù)情況往往是正常的訪問(wèn),且同一訪問(wèn)指令可能重復(fù)訪問(wèn)多次,這時(shí),可以記 錄這些進(jìn)行重復(fù)訪問(wèn)指令的訪問(wèn)次數(shù),這樣做的好處在于當(dāng)后續(xù)對(duì)這些指令 進(jìn)行分析時(shí),可以從訪問(wèn)次數(shù)少的指令先開(kāi)始分析,因?yàn)樵L問(wèn)次數(shù)少,是引起 內(nèi)存異常訪問(wèn)的非正常訪問(wèn)的概率就大,從而更利于快速地對(duì)這些指令進(jìn)行定 位。
需要說(shuō)明的是,這個(gè)步驟并非并發(fā)明實(shí)施例必要的步驟,而是優(yōu)選的一個(gè) 方案,通過(guò)加入對(duì)指令訪問(wèn)次數(shù)的獲取,可以更快速地對(duì)引發(fā)內(nèi)存異常訪問(wèn)的 指令進(jìn)行定位。
5204、 根據(jù)指令地址定位引起內(nèi)存異常訪問(wèn)的函數(shù); 通過(guò)步驟S202獲取訪問(wèn)指令的地址后,可以通過(guò)查看程序的二進(jìn)制文件找
到這條指令所在的函數(shù),如果發(fā)現(xiàn)該函數(shù)原本是不應(yīng)該訪問(wèn)被監(jiān)視的內(nèi)存的, 則這個(gè)函數(shù)就是引起內(nèi)存異常訪問(wèn)的函數(shù)。
例如,在內(nèi)存賦值函數(shù)memset()中,第一個(gè)參數(shù)為指向需要賦值的內(nèi)存首 地址的指針。假設(shè)通過(guò)步驟S202獲取訪問(wèn)指令的地址,并通過(guò)查看程序二進(jìn)制 文件找到這次訪問(wèn)行為是由memset()函數(shù)引起的,便可以分析memset()的第一 個(gè)參數(shù)是否出錯(cuò),如果沒(méi)有出錯(cuò),說(shuō)明這是一次正常的訪問(wèn);相反,如果發(fā)現(xiàn) 參數(shù)有問(wèn)題,比如指針值已經(jīng)發(fā)生被改變,或變成了值不確定的野指針,則這 次訪問(wèn)為非正常的訪問(wèn),也就是說(shuō),是memset()函數(shù)的第一個(gè)參數(shù)設(shè)置錯(cuò)誤引 發(fā)了內(nèi)存異常訪問(wèn),由此即對(duì)引起內(nèi)存異常訪問(wèn)的函數(shù)進(jìn)行了定位,后續(xù)便可 以通過(guò)修改相應(yīng)的參數(shù)來(lái)避免內(nèi)存異常訪問(wèn)現(xiàn)象的發(fā)生。
5205、 分析訪問(wèn)指令,得到分析結(jié)果;
在步驟S204中對(duì)引發(fā)內(nèi)存異常訪問(wèn)的指令進(jìn)行了定位,但此時(shí)程序處于異 常處理當(dāng)中(參見(jiàn)步驟S201,程序在對(duì)監(jiān)視的內(nèi)存出現(xiàn)設(shè)定的訪問(wèn)行為時(shí)會(huì)跳 轉(zhuǎn)到異常處理中),為了讓程序繼續(xù)執(zhí)行,還需要對(duì)該訪問(wèn)指令進(jìn)行分析,得到分析結(jié)果。
對(duì)訪問(wèn)指令的分析具體包括修改與完成所述訪問(wèn)指令動(dòng)作相關(guān)的寄存器 和/或內(nèi)存,使得能夠代替所述訪問(wèn)指令完成相應(yīng)的動(dòng)作,以及后續(xù)需要通過(guò)代 替這條指令完成相應(yīng)的動(dòng)作,使得程序能夠繼續(xù)完整地執(zhí)行下去。
分析訪問(wèn)指令可以至少包括以下一個(gè)方面
1) 確定訪問(wèn)指令的類型;
確定訪問(wèn)指令的類型可以知道指令對(duì)內(nèi)存或寄存器的操作過(guò)程。如指令類 型為L(zhǎng)OAD類指令(加載指令)時(shí),則可以知道這條指令是將內(nèi)存的值加載到 寄存器當(dāng)中;或者指令類型為STORE類指令(存儲(chǔ)指令)時(shí),則可以知道這條 指令是將寄存器的值加載到內(nèi)存當(dāng)中。
2) 分析訪問(wèn)指令所操作的位寬;
在MIPS指令中,有一些指令只能操作一個(gè)字節(jié)(8位),有些指令能操作 一個(gè)半字(Half Word,占16位);還有一些指令能夠操作一個(gè)字(Word,占 16位)或雙字(Double Word,占64位),需要分析訪問(wèn)指令屬于上述哪一種 情況。
3) 分析是否使用了基于寄存器的偏移量;
有些指令(如LOAD類指令或STORE類指令)對(duì)內(nèi)存或寄存器進(jìn)行操作時(shí), 會(huì)使用基于寄存器的偏移量,如LOAD類指令中的LW (LoadWord)指令用于 從內(nèi)存中加載一個(gè)字(帶符號(hào))到寄存器中,占32位的存儲(chǔ)空間,其中第0位 到第15位即為基于寄存器的偏移量。對(duì)其余指令的分析可參考相關(guān)MIPS定義, 在此不再贅述。
4) 檢查訪問(wèn)指令是否在DelaySlot (延遲槽);
在MIPS流水線(Pipeline )執(zhí)行過(guò)程當(dāng)中, 一個(gè)條件分支(Conditional Branch)通常不能立刻判斷出是否跳轉(zhuǎn);這個(gè)時(shí)候,為了使流水線正常進(jìn)行, MIPS流水線先執(zhí)行其它一條(或多條指令)不依賴于該條件分支的指令,這就 像在條件分支指令和它的跳轉(zhuǎn)目的指令之間形成了一個(gè)槽,用于執(zhí)行其它指 令,稱這個(gè)槽為延遲槽。
檢查指令是否在延遲槽中,具體可通過(guò)查詢Cause Register中的BD位;如 果BD位為l,說(shuō)明該指令是在延遲槽中;否則,該指令不位于延遲槽中。如果訪問(wèn)指令位于延遲槽時(shí),說(shuō)明上一條指令是個(gè)條件分支,即存在一個(gè) 跳轉(zhuǎn)指令。當(dāng)程序從異常處理返回時(shí),并不會(huì)執(zhí)行該訪問(wèn)指令的下一條指令, 而是會(huì)去執(zhí)行跳轉(zhuǎn)指令,但由于延遲槽的存在,程序又會(huì)去執(zhí)行延遲槽中的指 令,然后異常處理返回后又去執(zhí)行跳轉(zhuǎn)指令,如此反復(fù)會(huì)使程序出現(xiàn)死循環(huán)。 為了防止這種情況的發(fā)生,需要分析跳轉(zhuǎn)指令的下一條指令為哪一條指令,然 后代替跳轉(zhuǎn)指令完成向下一條指令跳轉(zhuǎn)的目的。
如果訪問(wèn)指令不位于延遲槽中,則不會(huì)存在上述出現(xiàn)死循環(huán)的情況,程序 會(huì)接著執(zhí)行該訪問(wèn)指令的下一條指令,因此,只需要分析該訪問(wèn)指令即可。
5206、 根據(jù)分析結(jié)果,代替訪問(wèn)指令完成相應(yīng)的動(dòng)作; 通過(guò)步驟S205分析指令功能后,可以根據(jù)分析結(jié)果來(lái)代替訪問(wèn)指令完成相
應(yīng)的動(dòng)作。 一條指令如果要完成相應(yīng)動(dòng)作的話,需要修改與該指令相關(guān)的寄存 器,或者如果還對(duì)內(nèi)存進(jìn)行操作的話,還需要修改與訪問(wèn)指令相關(guān)的內(nèi)存的內(nèi) 容。
在本步驟中,通過(guò)修改與完成所述訪問(wèn)指令動(dòng)作相關(guān)的寄存器,使得能夠 代替訪問(wèn)指令完成相應(yīng)的動(dòng)作,從而可以使程序繼續(xù)正常執(zhí)行。
以代替LOAD類指令(如LW、 LL、 LWR等指令)要完成的功能為例,因 為L(zhǎng)OAD類指令要從內(nèi)存中讀取數(shù)據(jù)到寄存器中,通過(guò)步驟S105的分析,可以 知道訪問(wèn)指令所進(jìn)行的操作,所以可以根據(jù)步驟S105的分析結(jié)果,讀取相應(yīng)內(nèi) 存的值,并且更改相應(yīng)寄存器的值,來(lái)代替LOAD類指令要完成的功能。需要 說(shuō)明的是,在實(shí)際中,根據(jù)指令功能及目的不同,還需要修改一些其它寄存器, 如修改EPC寄存器,使得執(zhí)行完本指令后執(zhí)行下一條指令等。
通過(guò)代替訪問(wèn)指令完成相應(yīng)的動(dòng)作,使得程序可以繼續(xù)正常執(zhí)行,避免出 現(xiàn)需要復(fù)位系統(tǒng)的情況,在對(duì)內(nèi)存異常訪問(wèn)進(jìn)行定位的同時(shí)又不影響正常業(yè) 務(wù)。
5207、 繼續(xù)對(duì)設(shè)定的內(nèi)存區(qū)域進(jìn)行監(jiān)視;
繼續(xù)對(duì)內(nèi)存進(jìn)行監(jiān)視,獲取訪問(wèn)行為,如果出現(xiàn)訪問(wèn)行為,則繼續(xù)從步驟 S202開(kāi)始執(zhí)行。
本發(fā)明實(shí)施例通過(guò)不斷查看訪問(wèn)指令,分析訪問(wèn)指令,能夠有效及時(shí)地對(duì)
內(nèi)存異常訪問(wèn)進(jìn)行定位;并代替訪問(wèn)指令完成相應(yīng)的動(dòng)作,避免了需要復(fù)位系統(tǒng)的情況,使得程序能夠繼續(xù)執(zhí)行,從而可以不斷對(duì)內(nèi)存異常訪問(wèn)進(jìn)行定位。 同時(shí),從訪問(wèn)次數(shù)從少到多的次序查看訪問(wèn)指令,能夠更快地對(duì)內(nèi)存異常訪問(wèn) 進(jìn)行定位。
參見(jiàn)圖3,本發(fā)明實(shí)施例還提供了一種內(nèi)存異常訪問(wèn)定位裝置30,包括 監(jiān)視單元301,用于監(jiān)視出現(xiàn)異常訪問(wèn)的內(nèi)存,捕獲訪問(wèn)行為; 獲取單元302,用于根據(jù)所述訪問(wèn)行為獲取訪問(wèn)指令,通過(guò)所述訪問(wèn)指令 對(duì)所述訪問(wèn)行為進(jìn)行定位;
分析單元303,用于分析所述訪問(wèn)指令,得到分析結(jié)果;
代替單元304,用于根據(jù)所述分析結(jié)果,代替所述訪問(wèn)指令完成相應(yīng)的動(dòng)作。
其中,監(jiān)視單元301可以通過(guò)配置相關(guān)寄存器組(如WATCH寄存器組或 JTAG寄存器組)來(lái)監(jiān)視出現(xiàn)異常訪問(wèn)的內(nèi)存,當(dāng)有指令對(duì)相關(guān)內(nèi)存進(jìn)行訪問(wèn) 時(shí),即出現(xiàn)了訪問(wèn)行為,此時(shí),系統(tǒng)會(huì)改變相關(guān)寄存器(如Casuse寄存器)中 某些位,以捕獲該訪問(wèn)行為。
所述獲取單元302還用于
當(dāng)通過(guò)配置WATCH寄存器組來(lái)監(jiān)視內(nèi)存時(shí),查詢EPC寄存器獲取所述訪 問(wèn)指令;或者,
當(dāng)通過(guò)配置JTAG寄存器組來(lái)監(jiān)視內(nèi)存時(shí),查詢DEPC寄存器獲取所述訪 問(wèn)指令。
當(dāng)發(fā)生訪問(wèn)行為時(shí),程序會(huì)跳轉(zhuǎn)到異常處理代碼碼,此時(shí),獲取單元302 可以通過(guò)查詢EPC寄存器或DEPC寄存器來(lái)獲取訪問(wèn)指令的地址,EPC寄存 器或DEPC寄存器中保存著產(chǎn)生訪問(wèn)行為的訪問(wèn)指令的地址。
所述內(nèi)存異常訪問(wèn)定位裝置30,還包括
統(tǒng)計(jì)單元305,用于獲取所述訪問(wèn)指令的訪問(wèn)次數(shù),根據(jù)所述訪問(wèn)次數(shù)從 少到多的次序查看所述訪問(wèn)指令,4吏得能夠更快對(duì)內(nèi)存異常訪問(wèn)進(jìn)行定位。
因?yàn)閷?duì)監(jiān)視的內(nèi)存的訪問(wèn)不僅有異常訪問(wèn),也有正常的訪問(wèn),且正常的訪 問(wèn)往往是占絕大多數(shù)。為了快速對(duì)產(chǎn)生異常訪問(wèn)的訪問(wèn)指令進(jìn)行定位,可以通 過(guò)統(tǒng)計(jì)單元305統(tǒng)計(jì)各指令的訪問(wèn)次數(shù),并根據(jù)訪問(wèn)次數(shù)從少到多的次序查看,這樣,先查看的是異常指令的概率就比較大,有利于對(duì)內(nèi)存異常訪問(wèn)進(jìn)行更快 速地定位。
分析單元303還用于
分析執(zhí)行所述訪問(wèn)指令時(shí),所述訪問(wèn)指令會(huì)對(duì)寄存器和/或內(nèi)存產(chǎn)生影響的 特征,還可以至少如下單元
類型分析單元,用于確定所述訪問(wèn)指令的類型;或者, 位寬分析單元,用于分析所述訪問(wèn)指令所操作的位寬;或者, 偏移量分析單元,用于分析是否使用了基于寄存器的偏移量;或者 延遲槽分析單元,用于檢查訪問(wèn)指令是否在延遲槽。 所述代^,單元304還用于
修改與完成所述訪問(wèn)指令動(dòng)作相關(guān)的寄存器和/或內(nèi)存,使得能夠代替所述 訪問(wèn)指令完成相應(yīng)的動(dòng)作。
為了避免程序在處理完異常返回后引起系統(tǒng)復(fù)位的問(wèn)題,需要代替引起異 常的訪問(wèn)指令完成相應(yīng)的動(dòng)作,使得程序能夠繼續(xù)執(zhí)行,并在執(zhí)行過(guò)程中不斷 查看訪問(wèn)指令,以對(duì)引起內(nèi)存異常訪問(wèn)的指令進(jìn)行有效定位。
本發(fā)明實(shí)施例通過(guò)不斷查看訪問(wèn)指令,分析訪問(wèn)指令,能夠有效及時(shí)地對(duì)
內(nèi)存異常訪問(wèn)進(jìn)行定位;并代替訪問(wèn)指令完成相應(yīng)的動(dòng)作,避免了需要復(fù)位系 統(tǒng)的情況, -使得程序能夠繼續(xù)執(zhí)行,從而可以不斷對(duì)內(nèi)存異常訪問(wèn)進(jìn)行定位。 同時(shí),從訪問(wèn)次數(shù)從少到多的次序查看訪問(wèn)指令,能夠更快地對(duì)內(nèi)存異常訪問(wèn) 進(jìn)行定位。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程, 是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算 機(jī)可讀取存^諸介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。
其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory, ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory, RAM)等。
上列較佳實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)進(jìn)行了進(jìn)一步詳細(xì)說(shuō) 明,所應(yīng)理解的是,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本 發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等, 均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種內(nèi)存異常訪問(wèn)定位方法,其特征在于,包括如下步驟監(jiān)視出現(xiàn)異常訪問(wèn)的內(nèi)存,捕獲訪問(wèn)行為;根據(jù)所述訪問(wèn)行為獲取訪問(wèn)指令,通過(guò)所述訪問(wèn)指令對(duì)所述訪問(wèn)行為進(jìn)行定位;分析所述訪問(wèn)指令,得到分析結(jié)果;根據(jù)所述分析結(jié)果,代替所述訪問(wèn)指令完成相應(yīng)的動(dòng)作。
2、 如權(quán)利要求1所述的內(nèi)存異常訪問(wèn)定位方法,其特征在于,所述根據(jù) 所述訪問(wèn)行為獲取訪問(wèn)指令的步驟包括當(dāng)通過(guò)配置WATCH寄存器組來(lái)監(jiān)視內(nèi)存時(shí),查詢EPC寄存器獲取所述訪 問(wèn)指令;或者,當(dāng)通過(guò)配置JTAG寄存器組來(lái)監(jiān)視內(nèi)存時(shí),查詢DEPC寄存器獲取所述訪 問(wèn)指令。
3、 如權(quán)利要求1所述的內(nèi)存異常訪問(wèn)定位方法,其特征在于,還包括 獲取所述訪問(wèn)指令的訪問(wèn)次數(shù),根據(jù)所述訪問(wèn)次數(shù)從少到多的次序查看所述訪問(wèn)指令。
4、 如權(quán)利要求1所述的內(nèi)存異常訪問(wèn)定位方法,其特征在于,所述分析 所述訪問(wèn)指令的步驟包括分析執(zhí)行所述訪問(wèn)指令時(shí),所述訪問(wèn)指令會(huì)對(duì)寄存器和/或內(nèi)存產(chǎn)生影響的 特征,所述分析至少包括確定所述訪問(wèn)指令的類型;或者, 分析所述訪問(wèn)指令所操作的位寬;或者, 分析是否使用了基于寄存器的偏移量;或者 檢查訪問(wèn)指令是否在延遲槽。
5、 如權(quán)利要求1所述的內(nèi)存異常訪問(wèn)定位方法,其特征在于,根據(jù)所述 分析結(jié)果,代替所述訪問(wèn)指令完成相應(yīng)的動(dòng)作的步驟包括修改與完成所述訪問(wèn)指令動(dòng)作相關(guān)的寄存器和/或內(nèi)存,使得能夠代替所述 訪問(wèn)指令完成相應(yīng)的動(dòng)作。
6、 一種內(nèi)存異常訪問(wèn)定位裝置,其特征在于,包括 監(jiān)視單元,用于監(jiān)視出現(xiàn)異常訪問(wèn)的內(nèi)存,捕獲訪問(wèn)行為;獲取單元,用于根據(jù)所述訪問(wèn)行為獲取訪問(wèn)指令,通過(guò)所述訪問(wèn)指令對(duì)所 述訪問(wèn)4亍為進(jìn)4亍定4立;分析單元,用于分析所述訪問(wèn)指令,得到分析結(jié)果;代替單元,用于根據(jù)所述分析結(jié)果,代替所述訪問(wèn)指令的完成相應(yīng)的動(dòng)作。
7、 如權(quán)利要求6所述的內(nèi)存異常訪問(wèn)定位裝置,其特征在于,所述獲取 單元還用于當(dāng)通過(guò)配置WATCH寄存器組來(lái)監(jiān)視內(nèi)存時(shí),查詢EPC寄存器獲取所述訪 問(wèn)指令;或者,當(dāng)通過(guò)配置JTAG寄存器組來(lái)監(jiān)視內(nèi)存時(shí),查詢DEPC寄存器獲取所述訪 問(wèn)指令。
8、 如權(quán)利要求6所述的內(nèi)存異常訪問(wèn)定位裝置,其特征在于,還包括 統(tǒng)計(jì)單元,用于獲取所述訪問(wèn)指令的訪問(wèn)次數(shù),根據(jù)所述訪問(wèn)次數(shù)從少到多的次序查看所述訪問(wèn)指令,使得能夠更快對(duì)內(nèi)存異常訪問(wèn)進(jìn)行定位。
9、 如權(quán)利要求6所述的內(nèi)存異常訪問(wèn)定位裝置,其特征在于,所述分析 單元還用于,分析執(zhí)行所述訪問(wèn)指令時(shí),所述訪問(wèn)指令會(huì)影響寄存器和/或內(nèi)存 的特征,至少還包括如下單元。類型分析單元,用于確定所述訪問(wèn)指令的類型;或者,位寬分析單元,用于分析所述訪問(wèn)指令所操作的位寬;或者,偏移量分析單元,用于分析是否使用了基于寄存器的偏移量;或者延遲槽分析單元,用于檢查訪問(wèn)指令是否在延遲槽。
10、 如權(quán)利要求6所述的內(nèi)存異常訪問(wèn)定位裝置,其特征在于,所述代替 單元還用于修改與完成所述訪問(wèn)指令動(dòng)作相關(guān)的寄存器和/或內(nèi)存,使得能夠代替所述 訪問(wèn)指令完成相應(yīng)的動(dòng)作。
全文摘要
本發(fā)明實(shí)施例公開(kāi)了一種內(nèi)存異常訪問(wèn)定位方法及裝置,其中,內(nèi)存異常訪問(wèn)定位方法包括如下步驟監(jiān)視出現(xiàn)異常訪問(wèn)的內(nèi)存,捕獲訪問(wèn)行為;根據(jù)所述訪問(wèn)行為獲取訪問(wèn)指令,通過(guò)所述訪問(wèn)指令對(duì)所述訪問(wèn)行為進(jìn)行定位;分析所述訪問(wèn)指令,得到分析結(jié)果;根據(jù)所述分析結(jié)果,代替所述訪問(wèn)指令完成相應(yīng)的動(dòng)作。通過(guò)本發(fā)明實(shí)施例,可以對(duì)內(nèi)存異常訪問(wèn)進(jìn)行有效地定位。
文檔編號(hào)G06F11/36GK101533370SQ20091005890
公開(kāi)日2009年9月16日 申請(qǐng)日期2009年4月9日 優(yōu)先權(quán)日2009年4月9日
發(fā)明者王洪雷 申請(qǐng)人:成都市華為賽門鐵克科技有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1