專(zhuān)利名稱(chēng):一種系統(tǒng)死機(jī)的處理方法、裝置及設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種系統(tǒng)死機(jī)的處理方法、裝置及設(shè)備。
背景技術(shù):
目前的嵌入式系統(tǒng)或計(jì)算機(jī)系統(tǒng),在遇到比較嚴(yán)重的故障時(shí),會(huì)出現(xiàn)死機(jī)現(xiàn)象,這種死機(jī)可以是主動(dòng)死機(jī),即設(shè)備運(yùn)行過(guò)程中發(fā)現(xiàn)有錯(cuò)誤了,主動(dòng)運(yùn)行死機(jī)程序,也可以被動(dòng)死機(jī),即設(shè)備運(yùn)行過(guò)程中由于出現(xiàn)了錯(cuò)誤,系統(tǒng)運(yùn)行不下去了,直接拋出了死機(jī)?,F(xiàn)有技術(shù)中,對(duì)于死機(jī)異常的處理一種方式是采用死機(jī)后系統(tǒng)直接重啟的方式, 系統(tǒng)重啟之后原本內(nèi)存中信息將重新被刷新掉,所以故障之前的現(xiàn)場(chǎng)信息將被丟失,不利于故障的定位?;蛘卟捎妙A(yù)先定義需要備份的內(nèi)存信息,在系統(tǒng)死機(jī)后,備份相關(guān)信息后再重啟的方式,但由于所記錄的相關(guān)信息相對(duì)比較固定,具有一定的局限性,而引起死機(jī)的故障原因比較復(fù)雜,對(duì)于一些比較隱蔽的、難以定位的故障原因,則無(wú)法從備份的相關(guān)信息中定位。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供的一種系統(tǒng)死機(jī)的處理方法、裝置及設(shè)備,用以解決現(xiàn)有系統(tǒng)死機(jī)的處理方式無(wú)法有效地定位故障的問(wèn)題。本發(fā)明實(shí)施例提供的一種系統(tǒng)死機(jī)的處理方法,包括在系統(tǒng)死機(jī)后,控制系統(tǒng)進(jìn)入駐留模式;所述駐留模式為系統(tǒng)不重啟且保留死機(jī)時(shí)內(nèi)存中所有信息的模式;在系統(tǒng)進(jìn)入駐留模式后,根據(jù)用戶輸入的內(nèi)存導(dǎo)出命令,導(dǎo)出內(nèi)存中的信息;分析所導(dǎo)出的內(nèi)存中的信息,對(duì)系統(tǒng)死機(jī)的故障進(jìn)行定位。本發(fā)明實(shí)施例提供的一種處理系統(tǒng)死機(jī)的裝置,包括控制模塊,用于在系統(tǒng)死機(jī)后,控制系統(tǒng)進(jìn)入駐留模式;所述駐留模式為系統(tǒng)不重啟且保留死機(jī)時(shí)內(nèi)存中所有信息的模式;導(dǎo)出模塊,用于在系統(tǒng)進(jìn)入駐留模式后,根據(jù)用戶輸入的內(nèi)存導(dǎo)出命令,導(dǎo)出內(nèi)存中的信息;故障定位模塊,用于分析所導(dǎo)出的內(nèi)存中的信息,對(duì)系統(tǒng)死機(jī)的故障進(jìn)行定位。本發(fā)明實(shí)施例提供的一種嵌入式設(shè)備,包括本發(fā)明實(shí)施例提供的上述處理系統(tǒng)死機(jī)的裝置。本發(fā)明實(shí)施例的有益效果包括本發(fā)明實(shí)施例提供的系統(tǒng)死機(jī)的處理方法、裝置及設(shè)備,在系統(tǒng)死機(jī)時(shí),自動(dòng)控制系統(tǒng)進(jìn)入駐留模式,這種駐留模式下,系統(tǒng)死機(jī)后并不重啟,并且所有的內(nèi)存中的信息都保留著,這樣可以對(duì)死機(jī)時(shí)所有內(nèi)存信息任意進(jìn)行導(dǎo)出,由于所導(dǎo)出的內(nèi)存信息涵蓋了系統(tǒng)死機(jī)時(shí)內(nèi)存中的全部?jī)?nèi)容,提高了故障的定位的準(zhǔn)確度和效率,克服了現(xiàn)有技術(shù)中系統(tǒng)死機(jī)后直接重啟,或者采用系統(tǒng)死機(jī)后根據(jù)預(yù)先記錄的部分內(nèi)存信息進(jìn)行故障定位的種種弊端。
圖1為本發(fā)明實(shí)施例提供的系統(tǒng)死機(jī)的處理方法的流程圖;圖2為本發(fā)明實(shí)施例提供的利用導(dǎo)出的內(nèi)存中的信息進(jìn)行故障定位的流程圖;圖3為本發(fā)明實(shí)施例提供的異常地址所屬頁(yè)的內(nèi)容的示意圖;圖4為本發(fā)明實(shí)施例提供的系統(tǒng)運(yùn)行到系統(tǒng)死機(jī)再到對(duì)系統(tǒng)死機(jī)進(jìn)行處理總體流程圖;圖5為本發(fā)明實(shí)施例提供的處理系統(tǒng)死機(jī)的裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面結(jié)合附圖,對(duì)本發(fā)明實(shí)施例提供的一種系統(tǒng)死機(jī)的處理方法、裝置及設(shè)備的具體實(shí)施方式
進(jìn)行詳細(xì)地說(shuō)明。本發(fā)明實(shí)施例提供的系統(tǒng)死機(jī)的處理方法、裝置及設(shè)備中的系統(tǒng),可以包括常用的計(jì)算機(jī)系統(tǒng)、嵌入式系統(tǒng)等具有計(jì)算功能的設(shè)備。本發(fā)明實(shí)施例提供的系統(tǒng)死機(jī)的處理方法,如圖1所示,包括S101、在系統(tǒng)死機(jī)后,控制系統(tǒng)進(jìn)入駐留模式;駐留模式是指系統(tǒng)不重啟且保留死機(jī)時(shí)內(nèi)存中所有信息的模式;S102、在系統(tǒng)進(jìn)入駐留模式后,根據(jù)用戶輸入的內(nèi)存導(dǎo)出命令,導(dǎo)出內(nèi)存中的信息;S103、分析所導(dǎo)出的內(nèi)存中的信息,對(duì)系統(tǒng)死機(jī)的故障進(jìn)行定位。為了實(shí)現(xiàn)系統(tǒng)死機(jī)后不重啟,并且盡可能地保留死機(jī)時(shí)內(nèi)存中的全部信息,上述步驟SlOl S103的步驟之前,可以預(yù)先將控制系統(tǒng)進(jìn)入駐留模式的相關(guān)代碼添加至系統(tǒng)的相關(guān)軟件中,并設(shè)置作為駐留模式開(kāi)關(guān)的環(huán)境變量。在系統(tǒng)死機(jī)后,自動(dòng)打開(kāi)該駐留模式開(kāi)關(guān),或者還可以由人工打開(kāi)。例如設(shè)置該環(huán)境變量為真(變量為非零),則打開(kāi)駐留模式開(kāi)關(guān);反之,設(shè)置該環(huán)境變量為假(變量為零),則關(guān)閉駐留模式開(kāi)關(guān)。因此,在上述步驟SlOl中,控制系統(tǒng)進(jìn)入駐留模式,可以通過(guò)打開(kāi)駐留模式開(kāi)關(guān)實(shí)現(xiàn),即將作為駐留模式開(kāi)關(guān)的環(huán)境變量設(shè)置為一個(gè)設(shè)定的值(例如為1),即運(yùn)行相應(yīng)的代碼,控制系統(tǒng)進(jìn)入設(shè)定的駐留模式下。上述步驟S102中,可以采用現(xiàn)有的打印(DUMP,或者稱(chēng)為卸出、轉(zhuǎn)儲(chǔ)等,ISO將其定義為在某個(gè)特定時(shí)刻,把一個(gè)存儲(chǔ)設(shè)備中的全部或部分的內(nèi)容轉(zhuǎn)錄進(jìn)另一個(gè)存儲(chǔ)設(shè)備之中,目的通常是用于排除故障)方式來(lái)導(dǎo)出內(nèi)存中的信息,系統(tǒng)判斷接收到用戶輸入的導(dǎo)出命令(例如現(xiàn)有的cli命令)時(shí),在駐留模式下將系統(tǒng)死機(jī)時(shí)的內(nèi)存中的信息打印出來(lái), 以便進(jìn)行分析及故障定位,當(dāng)然,本發(fā)明實(shí)施例并不限于上述內(nèi)存信息的導(dǎo)出方式。上述步驟S103中,分析所導(dǎo)出的內(nèi)存中的信息,對(duì)系統(tǒng)死機(jī)的故障進(jìn)行定位,主要通過(guò)對(duì)異常地址的分析來(lái)確定是否發(fā)生改寫(xiě),具體來(lái)說(shuō),上述步驟S103中,利用導(dǎo)出的內(nèi)存中的信息進(jìn)行故障定位的步驟如圖2所示,包括S201、從所導(dǎo)出的內(nèi)存中的信息中,確定導(dǎo)致系統(tǒng)死機(jī)所涉及的異常地址;
異常地址通常使用下述方式確定通過(guò)所打印的內(nèi)存中的死機(jī)信息,確定可能引發(fā)死機(jī)故障的可疑的地址,作為異常地址,并取出該異常地址。S202、確定系統(tǒng)死機(jī)時(shí)該異常地址在內(nèi)存中所屬的頁(yè);在本步驟S202中,首先通過(guò)在所導(dǎo)出的內(nèi)存中的信息中,查找用于存儲(chǔ)全局變量地址信息的系統(tǒng)map文件;從map文件查找到頁(yè)表起始地址所在變量的地址;根據(jù)頁(yè)表起始地址所在變量的地址,查找頁(yè)表起始地址所在變量的內(nèi)容,獲得所述頁(yè)表起始地址;然后根據(jù)查找到的頁(yè)表起始地址、該異常地址、頁(yè)表起始地址到異常地址的頁(yè)偏移量以及每個(gè)頁(yè)的大小,計(jì)算出該異常地址所屬頁(yè)的地址,具體地,可以通過(guò)下述公式來(lái)計(jì)算Page = mem_map+ (((unsigned long) (addr) _PAGE_0FFSET) PAGE_SHIFT) *M上式中Page為所述異常地址所屬頁(yè)的地址;mem_map為頁(yè)表起始地址;(unsigned long) (addr)為該異常地址,該異常地址為無(wú)符號(hào)長(zhǎng)整數(shù)類(lèi)型;PAGE_0FFSET為頁(yè)偏移量,即頁(yè)表起始地址到異常地址的偏移量;PAGE_SHIFT為每個(gè)頁(yè)的大?。籑為頁(yè)表起始地址結(jié)構(gòu)體的大小。S203、根據(jù)異常地址所屬的頁(yè),查找系統(tǒng)死機(jī)時(shí)該頁(yè)在內(nèi)存中所屬的緩沖池;在本步驟S203中,可以根據(jù)該異常地址所屬的頁(yè)的地址,從導(dǎo)出的內(nèi)存的信息中,找到該頁(yè),該頁(yè)的內(nèi)容中記載了該頁(yè)所屬的緩沖池的相關(guān)信息,從而可以根據(jù)該頁(yè)的內(nèi)容確定該頁(yè)所屬的緩沖池。S204、根據(jù)該異常地址是否屬于所查找的緩沖池的診斷結(jié)果,確定是否發(fā)生了地址改寫(xiě)的死機(jī)故障。在本步驟S204中,例如根據(jù)緩沖池的類(lèi)型或者其他屬性信息,判定該異常地址原本并不屬于該緩沖池,那么可以定位是該緩沖池的使用者改寫(xiě)了地址,從而導(dǎo)致了系統(tǒng)死機(jī)的異常。為了更好地說(shuō)明本發(fā)明實(shí)施例提供的系統(tǒng)死機(jī)的處理方法中對(duì)于故障定位的步驟,下面一個(gè)具體的實(shí)例進(jìn)行說(shuō)明。假設(shè)定位的異常地址為06DDF000,已知該地址應(yīng)該是ZONE緩沖池對(duì)應(yīng)的地址。嵌入式系統(tǒng)中根據(jù)內(nèi)存管理的策略,內(nèi)存的地址可以分屬于ZONE緩沖池和DMA緩沖池,低地址內(nèi)存所在的緩沖池為DMA緩沖池,高地址內(nèi)存所在的緩沖池為ZONE緩沖池, ZONE緩沖池一般是指普通緩沖池,嵌入式系統(tǒng)所有應(yīng)用者都可以使用,DMA緩沖池一般是專(zhuān)門(mén)為驅(qū)動(dòng)服務(wù)的緩沖池。從map文件中找出變量memjnap (該變量記錄的內(nèi)容為頁(yè)表起始地址)的地址,假設(shè)變量memjnap的地址為010dc368,然后根據(jù)010dc368這個(gè)地址,查找變量memjnap對(duì)應(yīng)的內(nèi)容即0x2097674,也就是頁(yè)表起始地址。根據(jù)上述公式計(jì)算該異常地址所屬頁(yè)的地址Page = mem_map+(((unsignedlong) (addr) -PAGE_0FFSET) PAGE_SHIFT) *M其中頁(yè)表起始地址為0x2097674 ;PAGE_0FFSET即頁(yè)偏移量,是頁(yè)表起始地址到該異常地址的偏移量,由于 0x06DDF000除以2的12次方為0,所以該實(shí)例中0x06DDF000偏移量為0,即頁(yè)偏移量為0, 艮口 PAGE_0FFSET 為 0。(unsigned long) (addr) -PAGE_0FFSET)的值就等于該異常地址的值即 06DDF000 ;由于在該實(shí)例中一頁(yè)的大小為4096個(gè)字節(jié),即為2的12次方,因此PAG E_SHIFT 在該實(shí)例中等于12 ;在該實(shí)例中,M即頁(yè)表起始地址的結(jié)構(gòu)體大小為44。計(jì)算的結(jié)果為0x2097674+(0x06DDF000>> 12)*44 = 0x021C58C8 ;0x021C58C8即為計(jì)算出的該異常地址所屬頁(yè)的地址。根據(jù)該頁(yè)的地址,查找到該頁(yè)的內(nèi)容,如圖3所示,該頁(yè)的內(nèi)容中,可以查找到 cache (緩沖池)的相關(guān)信息,根據(jù)該頁(yè)所屬的緩沖池的標(biāo)識(shí)——size-1024 (DMA),該緩沖池屬于驅(qū)動(dòng)專(zhuān)用內(nèi)存,但是該異常地址原本應(yīng)該屬于ZONE緩沖池,因此可以確定緩沖池的標(biāo)識(shí)——size-1024 (DMA)的使用者改寫(xiě)了該異常地址,導(dǎo)致了系統(tǒng)死機(jī)。在導(dǎo)出內(nèi)存信息進(jìn)行故障定位之后,或者用戶不需要進(jìn)行故障定位時(shí),都可以發(fā)出系統(tǒng)退出駐留模式的命令,系統(tǒng)接收到用戶發(fā)出的系統(tǒng)退出駐留模式的命令時(shí),通過(guò)將預(yù)先配置的作為駐留模式開(kāi)關(guān)的環(huán)境變量設(shè)置為另外一個(gè)設(shè)定的值例如0,控制系統(tǒng)退出駐留模式,并控制系統(tǒng)重啟。如圖4所示的是本發(fā)明實(shí)施例提供的系統(tǒng)運(yùn)行到系統(tǒng)死機(jī)再到對(duì)系統(tǒng)死機(jī)進(jìn)行處理的一個(gè)總體流程的示意圖,該流程僅為本發(fā)明實(shí)施例提供的一種具體的實(shí)施方式,從該流程圖可以看出,系統(tǒng)初始化后,如果發(fā)生異常,拋出異常信息,繼而進(jìn)入駐留模式,然后等待用戶輸入退出駐留模式的命令,或者內(nèi)存打印命令等,如果用戶輸入退出駐留模式的命令,則直接退出駐留模式,否則判斷是否收到打印內(nèi)存的命令,如果收到,則打印內(nèi)存,并根據(jù)打印的信息進(jìn)行故障定位。如果收到退出駐留模式的命令,則退出駐留模式,并控制系統(tǒng)重啟,進(jìn)一步判斷系統(tǒng)是否需要下電,如果是,則對(duì)控制該系統(tǒng)關(guān)機(jī)。基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供了一種處理系統(tǒng)死機(jī)的裝置和嵌入式設(shè)備,由于該裝置和設(shè)備解決問(wèn)題的原理與前述系統(tǒng)死機(jī)的處理方法相似,因此該裝置和設(shè)備的實(shí)施可以參見(jiàn)前述方法的實(shí)施,重復(fù)之處不再贅述。本發(fā)明實(shí)施例提供的處理系統(tǒng)死機(jī)的裝置,如圖5所示,包括控制模塊501,用于在系統(tǒng)死機(jī)后,控制系統(tǒng)進(jìn)入駐留模式;駐留模式為系統(tǒng)不重啟且保留死機(jī)時(shí)內(nèi)存的所有信息的模式;導(dǎo)出模塊502,用于在系統(tǒng)進(jìn)入駐留模式后,根據(jù)用戶輸入的內(nèi)存導(dǎo)出命令,導(dǎo)出內(nèi)存中的信息;故障定位模塊503,用于分析所導(dǎo)出的內(nèi)存中的信息,對(duì)系統(tǒng)死機(jī)的故障進(jìn)行定位。進(jìn)一步地,上述控制模塊501,具體用于通過(guò)將預(yù)先配置的作為駐留模式開(kāi)關(guān)的環(huán)境變量設(shè)置為設(shè)定的值,控制系統(tǒng)進(jìn)入駐留模式。
進(jìn)一步地,上述故障定位模塊503,具體用于從所導(dǎo)出的內(nèi)存中的信息中,確定導(dǎo)致系統(tǒng)死機(jī)所涉及的異常地址;確定系統(tǒng)死機(jī)時(shí)所述異常地址在內(nèi)存中所屬的頁(yè);根據(jù)所述異常地址所屬的頁(yè),查找系統(tǒng)死機(jī)時(shí)該頁(yè)在內(nèi)存中所屬的緩沖池;以及根據(jù)所述異常地址是否屬于所查找的緩沖池的診斷結(jié)果,確定是否發(fā)生了地址改寫(xiě)的死機(jī)故障。進(jìn)一步地,上述故障定位模塊503,具體用于在所導(dǎo)出的內(nèi)存中的信息中,查找存儲(chǔ)全局變量地址信息的系統(tǒng)map文件;從所述系統(tǒng)map文件中查找頁(yè)表起始地址所在變量的地址;根據(jù)頁(yè)表起始地址所在變量的地址,查找頁(yè)表起始地址所在變量的內(nèi)容,獲得所述頁(yè)表起始地址;根據(jù)查找到的頁(yè)表起始地址、所述異常地址、頁(yè)表起始地址到異常地址的頁(yè)偏移量以及每個(gè)頁(yè)的大小,計(jì)算出所述異常地址所屬頁(yè)的地址;以及根據(jù)所述異常地址所屬的頁(yè)的地址,從系統(tǒng)死機(jī)時(shí)該頁(yè)的內(nèi)容中確定該頁(yè)所屬的緩沖池。進(jìn)一步地,上述故障定位模塊503,具體用于通過(guò)下述公式,計(jì)算出所述異常地址所屬頁(yè)的地址Page = mem_map+(((unsigned long) (addr) -PAGE_0FF SET) PAGE_SHIFT)上式中Page為所述異常地址所屬頁(yè)的地址;mem_map為頁(yè)表起始地址;(unsigned long) (addr)為所述異常地址,該異常地址為無(wú)符號(hào)長(zhǎng)整數(shù)類(lèi)型;PAGE_0FFSET為所述頁(yè)偏移量;PAGE_SHIFT為每個(gè)頁(yè)的大??;M為頁(yè)表起始地址結(jié)構(gòu)體的大小。進(jìn)一步地,上述控制模塊501,還用于在接收到用戶發(fā)出的系統(tǒng)退出駐留模式的命令時(shí),通過(guò)將預(yù)先配置的作為駐留模式開(kāi)關(guān)的環(huán)境變量設(shè)置為另外一個(gè)設(shè)定的值,控制系統(tǒng)退出駐留模式,并控制系統(tǒng)重啟。本發(fā)明實(shí)施例提供的上述處理系統(tǒng)死機(jī)的裝置,在具體實(shí)施時(shí),可以通過(guò)軟件、硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn),例如使用專(zhuān)用集成電路或其他硬件等同物來(lái)實(shí)現(xiàn),或者采用軟件的方式存儲(chǔ)于存儲(chǔ)器中并由處理器執(zhí)行,以實(shí)現(xiàn)上述的各種功能。本發(fā)明實(shí)施例還提供了一種嵌入式設(shè)備,該嵌入式設(shè)備包括本發(fā)明實(shí)施例提供的上述處理系統(tǒng)死機(jī)的裝置。本發(fā)明實(shí)施例提供的系統(tǒng)死機(jī)的處理方法、裝置及設(shè)備,在系統(tǒng)死機(jī)時(shí),自動(dòng)控制系統(tǒng)進(jìn)入駐留模式,這種駐留模式下,系統(tǒng)死機(jī)后并不重啟,并且所有的內(nèi)存中的信息都保留著,這樣可以對(duì)死機(jī)時(shí)的所有內(nèi)存信息任意進(jìn)行導(dǎo)出,由于所導(dǎo)出的內(nèi)存信息涵蓋了系統(tǒng)死機(jī)時(shí)內(nèi)存中的全部?jī)?nèi)容,提高了故障的定位的準(zhǔn)確度和效率,克服了現(xiàn)有技術(shù)中系統(tǒng)死機(jī)后直接重啟,或者采用系統(tǒng)死機(jī)后根據(jù)預(yù)先記錄的部分內(nèi)存信息進(jìn)行故障定位的種種弊端。進(jìn)一步地,本發(fā)明實(shí)施例提供的處理方法、裝置及設(shè)備,利用系統(tǒng)死機(jī)的異常地址,查找到所屬的內(nèi)存緩沖池,并根據(jù)該異常地址是否應(yīng)為該內(nèi)存緩沖池的地址來(lái)判斷是否發(fā)生地址改寫(xiě)這種隱蔽的死機(jī)故障,為較難準(zhǔn)確定位的死機(jī)故障的定位提供了一種解決渠道。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種系統(tǒng)死機(jī)的處理方法,其特征在于,包括在系統(tǒng)死機(jī)后,控制系統(tǒng)進(jìn)入駐留模式;所述駐留模式為系統(tǒng)不重啟且保留死機(jī)時(shí)內(nèi)存中所有信息的模式;在系統(tǒng)進(jìn)入駐留模式后,根據(jù)用戶輸入的內(nèi)存導(dǎo)出命令,導(dǎo)出內(nèi)存中的信息; 分析所導(dǎo)出的內(nèi)存中的信息,對(duì)系統(tǒng)死機(jī)的故障進(jìn)行定位。
2.如權(quán)利要求1所述的方法,其特征在于,所述控制系統(tǒng)進(jìn)入駐留模式,具體包括 通過(guò)將預(yù)先配置的作為駐留模式開(kāi)關(guān)的環(huán)境變量設(shè)置為設(shè)定的值,控制系統(tǒng)進(jìn)入駐留模式。
3.如權(quán)利要求1所述的方法,其特征在于,分析所導(dǎo)出的內(nèi)存中的信息,對(duì)系統(tǒng)死機(jī)的故障進(jìn)行定位,具體包括從所導(dǎo)出的內(nèi)存中的信息中,確定導(dǎo)致系統(tǒng)死機(jī)所涉及的異常地址; 確定系統(tǒng)死機(jī)時(shí)所述異常地址在內(nèi)存中所屬的頁(yè); 根據(jù)所述異常地址所屬的頁(yè),查找系統(tǒng)死機(jī)時(shí)該頁(yè)在內(nèi)存中所屬的緩沖池; 根據(jù)所述異常地址是否屬于所查找的緩沖池的診斷結(jié)果,確定是否發(fā)生了地址改寫(xiě)的死機(jī)故障。
4.如權(quán)利要求3所述的方法,其特征在于,確定所述異常地址所屬的頁(yè),具體包括 在所導(dǎo)出的內(nèi)存中的信息中,查找存儲(chǔ)全局變量地址信息的系統(tǒng)map文件;從所述系統(tǒng)map文件中查找頁(yè)表起始地址所在變量的地址;根據(jù)頁(yè)表起始地址所在變量的地址,查找頁(yè)表起始地址所在變量的內(nèi)容,獲得所述頁(yè)表起始地址;根據(jù)查找到的頁(yè)表起始地址、所述異常地址、頁(yè)表起始地址到異常地址的頁(yè)偏移量以及每個(gè)頁(yè)的大小,計(jì)算出所述異常地址所屬頁(yè)的地址;所述根據(jù)所述異常地址所屬的頁(yè),查找系統(tǒng)死機(jī)時(shí)該頁(yè)在內(nèi)存中所屬的緩沖池,包括根據(jù)所述異常地址所屬的頁(yè)的地址,從系統(tǒng)死機(jī)時(shí)該頁(yè)的內(nèi)容中確定該頁(yè)所屬的緩沖池。
5.如權(quán)利要求4所述的方法,其特征在于,通過(guò)下述公式,計(jì)算出所述異常地址所屬頁(yè)的地址Page = mem_map+(((unsigned long)(addr)-PAGE_0FFSET) PAGE_SHIFT) 上式中Page為所述異常地址所屬頁(yè)的地址; mem_map為頁(yè)表起始地址;(unsigned long) (addr)為所述異常地址,所述異常地址為無(wú)符號(hào)長(zhǎng)整數(shù)類(lèi)型; PAGE_0FFSET為所述頁(yè)偏移量; PAGE_SHIFT為每個(gè)頁(yè)的大??; M為頁(yè)表起始地址結(jié)構(gòu)體的大小。
6.如權(quán)利要求2所述的方法,其特征在于,在系統(tǒng)進(jìn)入駐留模式后,還包括在接收到用戶發(fā)出的系統(tǒng)退出駐留模式的命令時(shí),通過(guò)將預(yù)先配置的作為駐留模式開(kāi)關(guān)的環(huán)境變量設(shè)置為另外一個(gè)設(shè)定的值,控制系統(tǒng)退出駐留模式,并控制系統(tǒng)重啟。
7.一種處理系統(tǒng)死機(jī)的裝置,其特征在于,包括控制模塊,用于在系統(tǒng)死機(jī)后,控制系統(tǒng)進(jìn)入駐留模式;所述駐留模式為系統(tǒng)不重啟且保留死機(jī)時(shí)內(nèi)存中所有信息的模式;導(dǎo)出模塊,用于在系統(tǒng)進(jìn)入駐留模式后,根據(jù)用戶輸入的內(nèi)存導(dǎo)出命令,導(dǎo)出內(nèi)存中的 fn息;故障定位模塊,用于分析所導(dǎo)出的內(nèi)存中的信息,對(duì)系統(tǒng)死機(jī)的故障進(jìn)行定位。
8.如權(quán)利要求7所述的裝置,其特征在于,所述控制模塊,具體用于通過(guò)將預(yù)先配置的作為駐留模式開(kāi)關(guān)的環(huán)境變量設(shè)置為設(shè)定的值,控制系統(tǒng)進(jìn)入駐留模式。
9.如權(quán)利要求7所述的裝置,其特征在于,所述故障定位模塊,具體用于從所導(dǎo)出的內(nèi)存中的信息中,確定導(dǎo)致系統(tǒng)死機(jī)所涉及的異常地址;確定系統(tǒng)死機(jī)時(shí)所述異常地址在內(nèi)存中所屬的頁(yè);根據(jù)所述異常地址所屬的頁(yè),查找系統(tǒng)死機(jī)時(shí)該頁(yè)在內(nèi)存中所屬的緩沖池; 以及根據(jù)所述異常地址是否屬于所查找的緩沖池的診斷結(jié)果,確定是否發(fā)生了地址改寫(xiě)的死機(jī)故障。
10.如權(quán)利要求9所述的裝置,其特征在于,所述故障定位模塊,用于確定系統(tǒng)死機(jī)時(shí)所述異常地址在內(nèi)存中所屬的頁(yè);根據(jù)所述異常地址所屬的頁(yè),查找系統(tǒng)死機(jī)時(shí)該頁(yè)在內(nèi)存中所屬的緩沖池,具體為在所導(dǎo)出的內(nèi)存中的信息中,查找存儲(chǔ)全局變量地址信息的系統(tǒng)map文件;從所述系統(tǒng)map文件中查找頁(yè)表起始地址所在變量的地址;根據(jù)頁(yè)表起始地址所在變量的地址,查找頁(yè)表起始地址所在變量的內(nèi)容,獲得所述頁(yè)表起始地址;根據(jù)查找到的頁(yè)表起始地址、所述異常地址、頁(yè)表起始地址到異常地址的頁(yè)偏移量以及每個(gè)頁(yè)的大小,計(jì)算出所述異常地址所屬頁(yè)的地址;以及根據(jù)所述異常地址所屬的頁(yè)的地址,從系統(tǒng)死機(jī)時(shí)該頁(yè)的內(nèi)容中確定該頁(yè)所屬的緩沖池。
11.如權(quán)利要求10所述的裝置,其特征在于,所述故障定位模塊,具體用于通過(guò)下述公式,計(jì)算出所述異常地址所屬頁(yè)的地址Page = mem_map+(((unsigned long) (addr)-PAGE_0FF SET) PAGE_SHIFT) 上式中Page為所述異常地址所屬頁(yè)的地址; mem_map為頁(yè)表起始地址;(unsigned long) (addr)為所述異常地址,所述異常地址為無(wú)符號(hào)長(zhǎng)整數(shù)類(lèi)型; PAGE_0FFSET為所述頁(yè)偏移量; PAGE_SHIFT為每個(gè)頁(yè)的大?。?M為頁(yè)表起始地址結(jié)構(gòu)體的大小。
12.如權(quán)利要求8所述的裝置,其特征在于,所述控制模塊,還用于在接收到用戶發(fā)出的系統(tǒng)退出駐留模式的命令時(shí),通過(guò)將預(yù)先配置的作為駐留模式開(kāi)關(guān)的環(huán)境變量設(shè)置為另外一個(gè)設(shè)定的值,控制系統(tǒng)退出駐留模式,并控制系統(tǒng)重啟。
13.—種嵌入式設(shè)備,其特征在于,該嵌入式設(shè)備包括如權(quán)利要求7-11任一項(xiàng)所述的直ο
全文摘要
本發(fā)明公開(kāi)了一種系統(tǒng)死機(jī)的處理方法、裝置及設(shè)備。其中,該方法包括在系統(tǒng)死機(jī)后,控制系統(tǒng)進(jìn)入駐留模式;所述駐留模式為系統(tǒng)不重啟且保留死機(jī)時(shí)內(nèi)存的所有信息的模式;在系統(tǒng)進(jìn)入駐留模式后,根據(jù)用戶輸入的內(nèi)存導(dǎo)出命令,導(dǎo)出內(nèi)存中的信息;分析所導(dǎo)出的內(nèi)存中的信息,對(duì)系統(tǒng)死機(jī)的故障進(jìn)行定位。由于導(dǎo)出的內(nèi)存信息涵蓋了系統(tǒng)死機(jī)時(shí)內(nèi)存中的全部?jī)?nèi)容,提高了故障的定位的準(zhǔn)確度和效率,克服了現(xiàn)有技術(shù)中系統(tǒng)死機(jī)后直接重啟,或者采用系統(tǒng)死機(jī)后根據(jù)預(yù)先記錄的部分內(nèi)存信息進(jìn)行故障定位的種種弊端。
文檔編號(hào)G06F11/07GK102262571SQ20111020877
公開(kāi)日2011年11月30日 申請(qǐng)日期2011年7月25日 優(yōu)先權(quán)日2011年7月25日
發(fā)明者林雙鳳 申請(qǐng)人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司