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

一種定位軟件故障的方法

文檔序號(hào):6557675閱讀:496來(lái)源:國(guó)知局
專利名稱:一種定位軟件故障的方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)及信息技術(shù)領(lǐng)域,具體涉及一種定位軟件故障的方法。
背景技術(shù)
隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展,系統(tǒng)設(shè)備功能越來(lái)越強(qiáng)大,使得系統(tǒng)程序趨于龐大和復(fù)雜,因此,在系統(tǒng)運(yùn)行過(guò)程中,往往會(huì)出現(xiàn)一些異常情況,有時(shí)導(dǎo)致系統(tǒng)或功能單元(單板)復(fù)位。但對(duì)導(dǎo)致異常情況的故障進(jìn)行定位卻較為復(fù)雜。例如利用實(shí)時(shí)操作系統(tǒng),在程序中設(shè)置斷點(diǎn)跟蹤程序的運(yùn)行,每次執(zhí)行到斷點(diǎn)處可得到程序的狀態(tài)、堆棧的情況、各寄存器的內(nèi)容以及用戶設(shè)置的變量等,以此來(lái)定位故障,這種方法用于程序調(diào)試過(guò)程中很有效,但在軟件程序正常運(yùn)行中故障定位效率不高,顯然不適用。目前定位單板軟件問(wèn)題的手段有許多,如系統(tǒng)運(yùn)行的日志信息、告警信息、性能統(tǒng)計(jì)信息等。但是目前仍缺乏定位導(dǎo)致單板復(fù)位的軟件問(wèn)題的有效手段,主要原因是由于系統(tǒng)運(yùn)行時(shí)出現(xiàn)異常情況往往稍縱即逝且難以重現(xiàn),因此無(wú)法獲取單板復(fù)位前瞬間的軟件運(yùn)行環(huán)境及相關(guān)狀態(tài)信息,如函數(shù)調(diào)用堆棧、當(dāng)前處理的消息等等。
在系統(tǒng)運(yùn)行過(guò)程中,引起單板復(fù)位的直接原因難以分析確定,單板復(fù)位的現(xiàn)象很難重現(xiàn),導(dǎo)致單板復(fù)位的問(wèn)題定位困難,使得難以排除單板中存在的故障隱患,不利于提高系統(tǒng)的穩(wěn)定性。
定位單板軟件的故障,最常見(jiàn)的方式是通過(guò)系統(tǒng)記錄的運(yùn)行日志或者調(diào)試日志。日志可以記錄系統(tǒng)運(yùn)行過(guò)程中的各種信息,如消息調(diào)度軌跡、函數(shù)調(diào)度軌跡、任務(wù)調(diào)試軌跡等等。為了能有效定位單板復(fù)位的故障,需要持續(xù)地記錄系統(tǒng)運(yùn)行日志,并通過(guò)網(wǎng)絡(luò)或者硬盤予以保存,以方便在單板復(fù)位時(shí)獲取相關(guān)信息。
然而現(xiàn)有技術(shù)存在如下缺點(diǎn)為了提高效率,系統(tǒng)在運(yùn)行時(shí)通常使用緩存的方式,因此讀取內(nèi)存中的數(shù)據(jù)并寫入文件或者通過(guò)網(wǎng)絡(luò)發(fā)送數(shù)據(jù)時(shí),系統(tǒng)很難做到真正的實(shí)時(shí)處理,而單板復(fù)位后,緩沖區(qū)中的信息無(wú)法保存,所記錄的信息是單板復(fù)位前一段時(shí)間的信息,而不是單板復(fù)位瞬間的信息。
由于往硬盤寫日志文件或者通過(guò)網(wǎng)絡(luò)發(fā)送日志信息的速度慢,如果要記錄信息量足夠的內(nèi)容,會(huì)嚴(yán)重影響系統(tǒng)正常使用硬盤與網(wǎng)絡(luò)資源。

發(fā)明內(nèi)容
鑒于上述現(xiàn)有技術(shù)中的情況,本發(fā)明的目的是提供一種簡(jiǎn)單、有效的單板定位軟件故障的方法,以解決單板軟件故障難以定位的問(wèn)題。
本發(fā)明提供的一種定位軟件故障的方法,包括a)在內(nèi)存中預(yù)留一區(qū)域,用于保存系統(tǒng)運(yùn)行狀態(tài)相關(guān)信息;b)在系統(tǒng)運(yùn)行過(guò)程中,記錄當(dāng)前最新的相關(guān)信息,并保存在所述預(yù)留區(qū)域;c)在故障后重啟時(shí)的初始化過(guò)程中,保留所述預(yù)留區(qū)域中保存的信息;d)讀取并分析所述預(yù)留區(qū)域中保存的信息,重現(xiàn)故障前瞬間的系統(tǒng)狀態(tài)。
其中所述內(nèi)存中預(yù)留區(qū)域的空間容量根據(jù)所需記錄的信息量確定。
所述系統(tǒng)運(yùn)行狀態(tài)相關(guān)信息包括當(dāng)前處理的消息、函數(shù)調(diào)用的堆棧、消息調(diào)度軌跡、函數(shù)調(diào)度軌跡、任務(wù)調(diào)試軌跡、調(diào)試日志、告警信息中一項(xiàng)或多項(xiàng)。
在步驟b)中,采用循環(huán)覆蓋的方式記錄當(dāng)前最新的相關(guān)信息。
在系統(tǒng)恢復(fù)后,讀取預(yù)留內(nèi)存中的信息之前,不記錄新的信息。
由上述方案可知,本發(fā)明通過(guò)預(yù)留一段內(nèi)存用于記錄軟件的運(yùn)行狀態(tài)信息,運(yùn)行過(guò)程中,實(shí)時(shí)記錄函數(shù)調(diào)用棧、收發(fā)的消息、任務(wù)調(diào)試軌跡、調(diào)試日志、告警信息等運(yùn)行相關(guān)信息,保留預(yù)留內(nèi)存中的數(shù)據(jù),使得在系統(tǒng)復(fù)位后仍能讀取單板復(fù)位前的信息,以獲取故障瞬間的有關(guān)信息,分析確定故障原因,從而提高定位單板復(fù)位問(wèn)題的效率。本發(fā)明提供的一種簡(jiǎn)單、有效的故障定位方法,不需要復(fù)雜的軟件、硬件,能準(zhǔn)確記錄并保存單板復(fù)位瞬間的軟件運(yùn)行環(huán)境信息,不影響系統(tǒng)的性能,可以在絕大部分單板軟件中實(shí)現(xiàn)。


圖1是根據(jù)現(xiàn)有技術(shù)的內(nèi)存分區(qū)示意圖;圖2是根據(jù)本發(fā)明的內(nèi)存分區(qū)示意圖;圖3是根據(jù)本發(fā)明實(shí)施例的方法流程圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案特性以及優(yōu)點(diǎn)更加清楚,下面以單板軟件為例對(duì)本發(fā)明予以詳細(xì)描述。
單板軟件的所用內(nèi)存一般是由系統(tǒng)根據(jù)需要進(jìn)行分配,一種典型的單板軟件的所用內(nèi)存分為保留區(qū)、管理內(nèi)存區(qū)、應(yīng)用程序存儲(chǔ)區(qū)、補(bǔ)丁存儲(chǔ)區(qū)以及空閑區(qū),如圖1所示。各存儲(chǔ)區(qū)的空間大小根據(jù)具體情況分配,或通過(guò)動(dòng)態(tài)分配。
因?yàn)檐浖谶\(yùn)行過(guò)程(包括初始化)中,如果不能對(duì)變量或者內(nèi)存進(jìn)行正確的初始化,變量或者內(nèi)存中的值就可能會(huì)為隨機(jī)值,導(dǎo)致系統(tǒng)的輸出不可預(yù)知。由于問(wèn)題出現(xiàn)的隨機(jī)性,同時(shí)問(wèn)題出現(xiàn)的代碼和導(dǎo)致問(wèn)題的初始化代碼一般相距很遠(yuǎn),這也導(dǎo)致了定位此類問(wèn)題很困難。所以為了能及早地暴露這樣的問(wèn)題,并能有效地定位出問(wèn)題,一般單板軟件的使用的內(nèi)存在單板復(fù)位后,需進(jìn)行初始化。內(nèi)存初始化值可采用下面兩種方式1)將內(nèi)存的初始值設(shè)置為0000,這樣可以比較容易發(fā)現(xiàn)與定位問(wèn)題。
2)把內(nèi)存的初始值設(shè)置為0xCC,因?yàn)閷?duì)于Intel處理器,0xCC是中斷指令,如果出現(xiàn)問(wèn)題可以很容易發(fā)現(xiàn)。
為了保存單板在由于故障導(dǎo)致復(fù)位前系統(tǒng)的狀態(tài)信息,參照?qǐng)D3,本發(fā)明提供的方法包括步驟S01在所述內(nèi)存中增加了一預(yù)留存儲(chǔ)區(qū)域,如圖2所示專門用于記錄單板運(yùn)行狀態(tài)信息。
預(yù)留存儲(chǔ)區(qū)域的空間大小取決于所需要記錄的信息內(nèi)容的多少??筛鶕?jù)具體需求確定。收集系統(tǒng)及軟件運(yùn)行狀態(tài)信息包括軟件及其他操作信息對(duì)于判斷、診斷故障原因,修復(fù)系統(tǒng)極為重要。為了定位單板軟件的故障,需要記錄當(dāng)前最新的單板軟件運(yùn)行相關(guān)信息,如當(dāng)前處理的消息、函數(shù)調(diào)用的堆棧等。所預(yù)留的內(nèi)存空間應(yīng)足以存儲(chǔ)所需信息,以保證存儲(chǔ)的信息完整。
步驟S02記錄當(dāng)前最新的單板運(yùn)行相關(guān)信息,并保存在所述內(nèi)存預(yù)留存儲(chǔ)區(qū)域。在系統(tǒng)運(yùn)行過(guò)程中,為了分析確定單板軟件故障及復(fù)位原因,需實(shí)時(shí)記錄定位故障所需求的單板軟件運(yùn)行相關(guān)信息,如當(dāng)前處理的消息、函數(shù)調(diào)用的堆棧、消息調(diào)度軌跡、函數(shù)調(diào)度軌跡、任務(wù)調(diào)試軌跡以及最后N條消息、最后N條告警、最后N條調(diào)試信息等分析判斷故障原因所需的信息。由于所分配的內(nèi)存空間有限,而且只需記錄并保存當(dāng)前最新的相關(guān)信息,故可以采用循環(huán)覆蓋的方式記錄所需相關(guān)信息,以減少對(duì)內(nèi)存的需求量。由于內(nèi)存容量有限,預(yù)留區(qū)域的空間容量也是限定的,不能也不必記錄太多的相關(guān)信息,在預(yù)留區(qū)域被填滿時(shí),后續(xù)的信息覆蓋較早記錄的信息,如此循環(huán),以使預(yù)留區(qū)域中始終保留所需的軟件運(yùn)行相關(guān)信息。
另外,可以重新定義記錄的內(nèi)存結(jié)構(gòu),只要保證在讀取預(yù)留存儲(chǔ)區(qū)域信息時(shí)使用的結(jié)構(gòu)保持一致即可。
例如,將堆棧信息記錄在預(yù)留的存儲(chǔ)區(qū)域中的接口WriteStackInfoToLastWord(char*pStatck,char*pLastWordForStack)其中pStack為堆棧信息區(qū),pLastWordForStack為保存堆棧信息的內(nèi)存地址。
每次在函數(shù)調(diào)用前,調(diào)用WriteStackInfoToLastWord把函數(shù)的堆棧信息記錄在故障瞬間信息區(qū),如果函數(shù)實(shí)現(xiàn)存在問(wèn)題,如非法操作,導(dǎo)致單板復(fù)位,在單板復(fù)位前,pLastWordForStack記錄的就是導(dǎo)致問(wèn)題出現(xiàn)的函數(shù)調(diào)用堆棧。這樣就可以很容易的定位出問(wèn)題函數(shù)。
步驟S03保留所述預(yù)留存儲(chǔ)區(qū)域中保存的信息。在單板復(fù)位重啟后的初始化過(guò)程中,對(duì)內(nèi)存的預(yù)留存儲(chǔ)區(qū)域不進(jìn)行初始化,即不使用0000這樣的數(shù)值來(lái)設(shè)置內(nèi)存的初始值,而是避開(kāi)所預(yù)留存儲(chǔ)區(qū)域的地址空間來(lái)設(shè)置內(nèi)存的初始值,這樣就保留預(yù)留存儲(chǔ)區(qū)域中存儲(chǔ)的單板復(fù)位前的運(yùn)行狀態(tài)信息,而其它內(nèi)存區(qū)域使用通常的初始化方法清除內(nèi)存信息。
在單板由于故障而重啟初始化之后,可以通過(guò)各種方法獲取記錄在內(nèi)存的預(yù)留存儲(chǔ)區(qū)域中的信息,如記錄在文件中,或者通過(guò)網(wǎng)絡(luò)發(fā)送。
例如WriteStackInfoToFile(char*pLastWordForStack,char*FileName),其中pLastWordForStack為預(yù)留存儲(chǔ)區(qū)域的堆棧內(nèi)存地址,F(xiàn)ileName為保存的文件名。
步驟S04讀取并分析所述預(yù)留空間中保存的信息,重現(xiàn)故障前瞬間的系統(tǒng)狀態(tài)。通過(guò)工具解析記錄預(yù)留存儲(chǔ)區(qū)域中保存的單板復(fù)位前的運(yùn)行狀態(tài)相關(guān)信息,重現(xiàn)復(fù)位前瞬間的系統(tǒng)狀態(tài),如調(diào)用堆棧信息。
在讀取預(yù)留存儲(chǔ)區(qū)域中的信息之前,不在預(yù)留存儲(chǔ)區(qū)域中記錄新的內(nèi)容,以免覆蓋用于定位故障的有效信息。在讀取上次記錄的預(yù)留存儲(chǔ)區(qū)域中的信息并保存之后,才開(kāi)始更新系統(tǒng)狀態(tài)。
以上所述僅為說(shuō)明本發(fā)明的原理,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。
權(quán)利要求
1.一種定位軟件故障的方法,其特征在于,包括a)在內(nèi)存中預(yù)留一區(qū)域,用于保存系統(tǒng)運(yùn)行狀態(tài)相關(guān)信息;b)在系統(tǒng)運(yùn)行過(guò)程中,記錄當(dāng)前最新的相關(guān)信息,并保存在所述預(yù)留區(qū)域;c)在故障后重啟時(shí)的初始化過(guò)程中,保留所述預(yù)留區(qū)域中保存的信息;d)讀取并分析所述預(yù)留區(qū)域中保存的信息,重現(xiàn)故障前瞬間的系統(tǒng)狀態(tài)。
2.如權(quán)利要求1所述的定位軟件故障的方法,其特征在于,其中所述內(nèi)存中預(yù)留區(qū)域的空間容量根據(jù)所需記錄的信息量確定。
3.如權(quán)利要求1所述的定位軟件故障的方法,其特征在于,所述系統(tǒng)運(yùn)行狀態(tài)相關(guān)信息包括當(dāng)前處理的消息、函數(shù)調(diào)用的堆棧、消息調(diào)度軌跡、函數(shù)調(diào)度軌跡、任務(wù)調(diào)試軌跡、調(diào)試日志、告警信息中一項(xiàng)或多項(xiàng)。
4.如權(quán)利要求1所述的定位軟件故障的方法,其特征在于,步驟b)中,采用循環(huán)覆蓋的方式記錄當(dāng)前最新的相關(guān)信息。
5.如權(quán)利要求1所述的定位軟件故障的方法,其特征在于,在系統(tǒng)恢復(fù)后,讀取預(yù)留內(nèi)存中的信息之前,不記錄新的信息。
全文摘要
本發(fā)明公開(kāi)了一種定位軟件故障的方法,包括a)在內(nèi)存中預(yù)留一區(qū)域,用于保存系統(tǒng)運(yùn)行狀態(tài)相關(guān)信息;b)在系統(tǒng)運(yùn)行過(guò)程中,記錄當(dāng)前最新的相關(guān)信息,并保存在所述預(yù)留區(qū)域;c)在故障后重啟時(shí)的初始化過(guò)程中,保留所述預(yù)留區(qū)域中保存的信息;d)讀取并分析所述預(yù)留區(qū)域中保存的信息,重現(xiàn)故障前瞬間的系統(tǒng)狀態(tài)。從而提高定位單板復(fù)位問(wèn)題的效率。根據(jù)本發(fā)明提供的方法,不需要復(fù)雜的軟件、硬件,能準(zhǔn)確記錄并保存單板復(fù)位瞬間的軟件運(yùn)行環(huán)境信息,不影響系統(tǒng)的性能,可以在絕大部分單板軟件中實(shí)現(xiàn)。
文檔編號(hào)G06F11/36GK101046765SQ20061006683
公開(kāi)日2007年10月3日 申請(qǐng)日期2006年3月29日 優(yōu)先權(quán)日2006年3月29日
發(fā)明者邱霖 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
永嘉县| 长宁区| 石台县| SHOW| 阿克陶县| 勐海县| 措美县| 和田县| 商洛市| 金平| 乌兰县| 榆中县| 淮安市| 德惠市| 石嘴山市| 澄城县| 郸城县| 保德县| 勐海县| 彭州市| 五寨县| 伊春市| 会泽县| 金寨县| 安仁县| 镇平县| 宁国市| 同仁县| 昭平县| 靖江市| 土默特右旗| 乌拉特前旗| 沙坪坝区| 武隆县| 前郭尔| 通州市| 黑河市| 常山县| 乌拉特中旗| 固安县| 四会市|