異常信息的記錄方法和裝置制造方法
【專利摘要】本發(fā)明實(shí)施例提供了一種異常信息的記錄方法和裝置,該方法包括:檢測(cè)到軟件的異常信息;根據(jù)所述異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),將所述異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中,其中,所述軟件黑匣子的結(jié)構(gòu)包括多個(gè)進(jìn)程的記錄區(qū),每個(gè)進(jìn)程的記錄區(qū)包括多個(gè)任務(wù)的記錄區(qū)。本申請(qǐng)?zhí)岣吡塑浖谙蛔拥耐ㄓ眯浴?br>
【專利說明】異常信息的記錄方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,特別是涉及一種異常信息的記錄方法和裝置。
【背景技術(shù)】
[0002]軟件黑匣子類似于飛機(jī)上的黑匣子功能,故而得名“軟件黑匣子”。其基本原理是:將單板高端內(nèi)存4Mbye左右從高端內(nèi)存剝離出來用于存儲(chǔ)軟件黑匣子中的異常信息,或通過獨(dú)立的外掛內(nèi)存來存儲(chǔ)軟件黑匣子中的異常信息,由黑匣子軟件獨(dú)立訪問其中的異常信息。內(nèi)存在單板復(fù)位時(shí)會(huì)將雙倍速率(Double Data Rate,DDR)內(nèi)存設(shè)置為自刷新模式,從而保證內(nèi)存內(nèi)容不丟失,并且在操作系統(tǒng)(Operating System, OS)重啟時(shí)也不會(huì)對(duì)該內(nèi)存進(jìn)行初始化清零操作。
[0003]通常的軟件黑匣子與單板的處理器及單板的內(nèi)存分布相關(guān),與操作系統(tǒng)相關(guān),不同操作系統(tǒng)中進(jìn)程、線程等的信息的提取也不同,故而通常的黑匣子需要為特定單板專門設(shè)計(jì),缺乏通用性,對(duì)使用者提供的接口也不統(tǒng)一,黑匣子解析方法也各異;一個(gè)系統(tǒng)中常常包含按單板區(qū)分和按操作系統(tǒng)區(qū)分訂制化的多種軟件黑匣子,使用很不方便。
[0004]因此,目前需要本領(lǐng)域技術(shù)人員迫切解決的一個(gè)技術(shù)問題就是:如何提高軟件黑匣子的通用性。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例所要解決的技術(shù)問題是提供一種異常信息的記錄方法,提高軟件黑匣子的通用性。
[0006]相應(yīng)的,本發(fā)明實(shí)施例還提供了一種異常信息的記錄裝置,用以保證上述方法的實(shí)現(xiàn)及應(yīng)用。
[0007]為了解決上述問題,本發(fā)明公開了一種異常信息的記錄方法,包括:檢測(cè)到軟件的異常信息;根據(jù)所述異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),將所述異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中,其中,所述軟件黑匣子的結(jié)構(gòu)包括多個(gè)進(jìn)程的記錄區(qū),每個(gè)進(jìn)程的記錄區(qū)包括多個(gè)任務(wù)的記錄區(qū)。
[0008]優(yōu)選地,在根據(jù)所述異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),將所述異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中之前,所述方法還包括:為所述軟件黑匣子封裝操作系統(tǒng)。
[0009]優(yōu)選地,為所述軟件黑匣子封裝操作系統(tǒng)包括:為所述軟件黑匣子封裝操作系統(tǒng)函數(shù)接口 ;為所述軟件黑匣子封裝只有部分操作系統(tǒng)支持的功能函數(shù)。
[0010]優(yōu)選地,所述每個(gè)進(jìn)程的記錄區(qū)中還包括:用戶區(qū)和異常區(qū),其中,所述用戶區(qū)記錄用戶提供的異常記錄,所述異常區(qū)記錄單板異常后的函數(shù)堆棧。
[0011]優(yōu)選地,每個(gè)任務(wù)的記錄區(qū)包括:多個(gè)記錄,每個(gè)記錄包括:記錄序列號(hào)、信息類型、時(shí)間戳、和用戶標(biāo)識(shí)ID。
[0012]優(yōu)選地,在根據(jù)所述異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),將所述異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中之后,所述方法還包括:將所述軟件黑匣子中的數(shù)據(jù)存儲(chǔ)到高端內(nèi)存或外掛內(nèi)存中。
[0013]優(yōu)選地,在將所述軟件黑匣子中的數(shù)據(jù)存儲(chǔ)到高端內(nèi)存或外掛內(nèi)存中之后,所述方法還包括:從所述高端內(nèi)存或外掛內(nèi)存中獲取所述軟件黑匣子中的數(shù)據(jù);基于所述黑匣子的結(jié)構(gòu)獲取異常信息,并對(duì)所述異常信息進(jìn)行分析。
[0014]為了解決上述問題,本發(fā)明公開了一種異常信息的記錄裝置,包括:檢測(cè)單元,用于檢測(cè)到軟件的異常信息;記錄單元,用于根據(jù)所述異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),將所述異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中,其中,所述軟件黑匣子的結(jié)構(gòu)包括多個(gè)進(jìn)程的記錄區(qū),每個(gè)進(jìn)程的記錄區(qū)包括多個(gè)任務(wù)的記錄區(qū)。
[0015]優(yōu)選地,所述裝置還包括:封裝單元,用于為所述軟件黑匣子封裝操作系統(tǒng)。
[0016]優(yōu)選地,所述封裝單元用于:為所述軟件黑匣子封裝操作系統(tǒng)函數(shù)接口 ;為所述軟件黑匣子封裝只有部分操作系統(tǒng)支持的功能函數(shù)。
[0017]優(yōu)選地,所述每個(gè)進(jìn)程的記錄區(qū)中還包括:用戶區(qū)和異常區(qū),其中,所述用戶區(qū)記錄用戶提供的異常記錄,所述異常區(qū)記錄單板異常后的函數(shù)堆棧。
[0018]優(yōu)選地,每個(gè)任務(wù)的記錄區(qū)包括:多個(gè)記錄,每個(gè)記錄包括:記錄序列號(hào)、信息類型、時(shí)間戳、和用戶標(biāo)識(shí)ID。
[0019]優(yōu)選地,所述裝置還包括:存儲(chǔ)單元,用于將所述軟件黑匣子中的數(shù)據(jù)存儲(chǔ)到高端內(nèi)存或外掛內(nèi)存中。
[0020]優(yōu)選地,所述裝置還包括:獲取單元,用于從所述高端內(nèi)存或外掛內(nèi)存中獲取所述軟件黑匣子中的數(shù)據(jù);分析單元,用于基于所述黑匣子的結(jié)構(gòu)獲取異常信息,并對(duì)所述異常信息進(jìn)行分析。
[0021]與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例包括以下優(yōu)點(diǎn):
[0022]在現(xiàn)有技術(shù)中,需要為特定單板專門設(shè)計(jì)軟件黑匣子,軟件黑匣子缺乏通用性。在本申請(qǐng)中,軟件黑匣子具有統(tǒng)一的結(jié)構(gòu),軟件黑匣子的結(jié)構(gòu)包括多個(gè)進(jìn)程的記錄區(qū),每個(gè)進(jìn)程的記錄區(qū)包括多個(gè)任務(wù)的記錄區(qū),根據(jù)異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),即可將異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中,從而提高了軟件黑匣子的通用性。
【專利附圖】
【附圖說明】
[0023]圖1是本發(fā)明的一種異常信息的記錄方法實(shí)施例的步驟流程圖;
[0024]圖2是圖1所示實(shí)施例的軟件黑匣子功能實(shí)現(xiàn)的示意圖;
[0025]圖3是圖1所示實(shí)施例的軟件黑匣子記錄區(qū)的示意圖;
[0026]圖4是本發(fā)明的一種異常信息的記錄裝置實(shí)施例的結(jié)構(gòu)框圖;
[0027]圖5是本發(fā)明的另一種異常信息的記錄裝置實(shí)施例的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0028]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。
[0029]本發(fā)明實(shí)施例的核心構(gòu)思之一在于,檢測(cè)到軟件的異常信息;根據(jù)異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),將異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中,其中,軟件黑匣子的結(jié)構(gòu)包括多個(gè)進(jìn)程的記錄區(qū),每個(gè)進(jìn)程的記錄區(qū)包括多個(gè)任務(wù)的記錄區(qū)。在本申請(qǐng)中,軟件黑匣子具有統(tǒng)一的結(jié)構(gòu),軟件黑匣子的結(jié)構(gòu)包括多個(gè)進(jìn)程的記錄區(qū),每個(gè)進(jìn)程的記錄區(qū)包括多個(gè)任務(wù)的記錄區(qū),根據(jù)異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),即可將異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中,從而提高了軟件黑匣子的通用性。
[0030]參照?qǐng)D1,示出了本發(fā)明的一種異常信息的記錄方法實(shí)施例的步驟流程圖,具體可以包括如下步驟:
[0031]步驟102,檢測(cè)到軟件的異常信息;
[0032]在操作系統(tǒng)運(yùn)行過程中,可以啟動(dòng)專門的軟件檢測(cè)各個(gè)軟件是否存在異常,如果有,則可以檢測(cè)到軟件的異常信息,以便對(duì)異常進(jìn)行分析,下面介紹幾種檢測(cè)到軟件異常信息的方法。
[0033]當(dāng)堆棧沒有被破壞時(shí),可以獲取到系統(tǒng)異常時(shí)的堆棧信息;絕大多數(shù)上層應(yīng)用發(fā)生的異常都是任務(wù)級(jí)別的,即該異常會(huì)導(dǎo)致任務(wù)掛起,但系統(tǒng)還可以正常工作,此時(shí)獲得該任務(wù)的函數(shù)調(diào)用棧信息對(duì)于故障分析有很大的幫助。通常能夠在windsh上使用tt命令獲取函數(shù)調(diào)用棧信息,從而檢測(cè)到異常信息。
[0034]當(dāng)堆棧被破壞時(shí),需要通過代碼插入冗余信息來保存函數(shù)調(diào)用關(guān)系信息。函數(shù)調(diào)用棧信息是異常信息的一種,是軟件工作過程的記錄。堆棧被破壞時(shí)只能靠應(yīng)用代碼自己記錄函數(shù)調(diào)用信息,事后提取分析。但是如果在每個(gè)函數(shù)入、出均添加代碼,工作量很大,不容易實(shí)施。經(jīng)過對(duì)GNU編譯器套裝(GNU Compiler Collect1n, GCC)編譯器提供了一個(gè)選項(xiàng):-finstrument-funct1ns,利用該選項(xiàng),可以捕獲函數(shù)調(diào)用進(jìn)出情況,例如,可以自動(dòng)在函數(shù)的入出插入相應(yīng)的_enter/_exit函數(shù)調(diào)用,在_enter函數(shù)里記錄當(dāng)前的函數(shù)指針到黑匣子里,包括當(dāng)前的任務(wù)表示(Identifier, ID)及進(jìn)入標(biāo)志;在_61;^函數(shù)里記錄當(dāng)前的函數(shù)指針到黑匣子里,包括當(dāng)前的任務(wù)ID及出標(biāo)志,然后,將獲得的信息記錄在黑匣子中。
[0035]黑匣子文件(也稱為黑匣子日志或黑匣子日志文件)主要用于定位單板異常復(fù)位問題,所以黑匣子文件的自動(dòng)生成應(yīng)當(dāng)主要關(guān)注“異常復(fù)位”原因。實(shí)現(xiàn)技術(shù)上,可以沿用窗口(Windows)系統(tǒng)對(duì)于“異常關(guān)機(jī)”的檢查機(jī)制,系統(tǒng)正常運(yùn)行時(shí)生成一個(gè)臨時(shí)文件,正常關(guān)機(jī)時(shí)刪除此臨時(shí)文件;如果系統(tǒng)啟動(dòng)后發(fā)現(xiàn)此臨時(shí)文件仍然存在,則說明上次是異常關(guān)機(jī),檢測(cè)到異常,需要觸發(fā)異常處理。單板可以將運(yùn)行信息保存在高端內(nèi)存中(即,黑匣子存儲(chǔ)區(qū)域,帶電復(fù)位時(shí)內(nèi)容不丟失),啟動(dòng)時(shí)檢查該字段,以判斷本單板是否是異常復(fù)位。
[0036]步驟104,根據(jù)異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),將該異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中,其中,軟件黑匣子的結(jié)構(gòu)包括多個(gè)進(jìn)程的記錄區(qū),每個(gè)進(jìn)程的記錄區(qū)包括多個(gè)任務(wù)的記錄區(qū)。
[0037]在具體實(shí)現(xiàn)時(shí),如果檢測(cè)到軟件的異常,可以將異常信息存儲(chǔ)到軟件黑匣子中,在本實(shí)施例中,軟件黑匣子具有統(tǒng)一的結(jié)構(gòu),其中,包括多個(gè)進(jìn)程的記錄區(qū),每個(gè)進(jìn)程的記錄區(qū)包括多個(gè)任務(wù)的記錄區(qū),根據(jù)異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),可以將該異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中。
[0038]在本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)例中,在根據(jù)異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),將異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中之前,還可以為軟件黑匣子封裝操作系統(tǒng)。這樣,軟件黑匣子可以應(yīng)用于不同的操作系統(tǒng),無需對(duì)每種操作系統(tǒng)都特別設(shè)計(jì)軟件黑匣子,從而提高了軟件黑匣子的通用性,降低了軟件黑匣子的設(shè)計(jì)成本。
[0039]在具體實(shí)現(xiàn)時(shí),可以通過以下方式為軟件黑匣子封裝操作系統(tǒng):為軟件黑匣子封裝操作系統(tǒng)函數(shù)接口 ;為軟件黑匣子封裝只有部分操作系統(tǒng)支持的功能函數(shù)。
[0040]操作系統(tǒng)的封裝隔離可以通過一層操作系統(tǒng)隔離軟件來實(shí)現(xiàn),通過這一操作系統(tǒng)隔離軟件,能夠屏蔽不同操作系統(tǒng)的差異,對(duì)上層提供統(tǒng)一接口。封裝隔離包括:封裝操作系統(tǒng)函數(shù)接口,從而避免不同OS的相同功能由于其接口函數(shù)不同而造成的影響;各個(gè)操作系統(tǒng)具有的功能函數(shù)可能是不同的,有些功能函數(shù)只有部分操作系統(tǒng)支持,即,有的操作系統(tǒng)下有某功能函數(shù),但是有的操作系統(tǒng)下沒有該功能函數(shù),這種功能函數(shù)需要進(jìn)行封裝;操作系統(tǒng)提供的接口服務(wù)不方便黑匣子定位問題,為了方便定位問題而對(duì)系統(tǒng)函數(shù)進(jìn)行封裝,并加入了調(diào)試檢查點(diǎn),異常時(shí)記錄黑匣子。在具體實(shí)現(xiàn)時(shí),可以對(duì)如下幾類操作系統(tǒng)服務(wù)進(jìn)行封裝:基本數(shù)據(jù)類型、文件操作類、內(nèi)存訪問類、定時(shí)器類、信號(hào)量類、消息隊(duì)列類、任務(wù)類、系統(tǒng)異常監(jiān)視類、和通信服務(wù)類。
[0041]在本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)例中,黑匣子中的每個(gè)進(jìn)程的記錄區(qū)中還包括:用戶區(qū)和異常區(qū),其中,用戶區(qū)記錄用戶提供的異常記錄,異常區(qū)記錄單板異常后的函數(shù)堆棧。
[0042]在本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)例中,黑匣子中的每個(gè)任務(wù)的記錄區(qū)包括:多個(gè)記錄,每個(gè)記錄包括:記錄序列號(hào)、信息類型、時(shí)間戳、和用戶標(biāo)識(shí)ID。
[0043]在本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)例中,在根據(jù)異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),將異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中之后,還可以將軟件黑匣子中的數(shù)據(jù)存儲(chǔ)到高端內(nèi)存或外掛內(nèi)存中。
[0044]在具體實(shí)現(xiàn)時(shí),設(shè)備的黑匣子可以由兩部分組成,一是記錄黑匣子內(nèi)容的功能,二是存儲(chǔ)黑匣子的功能(一般該設(shè)備需要外掛存儲(chǔ)器)。圖2是本發(fā)明實(shí)施例的軟件黑匣子功能實(shí)現(xiàn)的示意圖,如圖2所示,用戶通過用戶接口將異常信息記錄到黑匣子中,從而實(shí)現(xiàn)記錄黑匣子內(nèi)容的功能,然后將記錄的內(nèi)容傳輸?shù)胶谙蛔哟鎯?chǔ)的區(qū)域,例如,存儲(chǔ)到高端內(nèi)存或外部?jī)?nèi)存中,從而實(shí)現(xiàn)存儲(chǔ)黑匣子的功能。如果黑匣子存儲(chǔ)區(qū)域?yàn)閱伟宓母叨藘?nèi)存,該內(nèi)存在單板重啟后,內(nèi)存不清零。
[0045]黑匣子模塊將數(shù)據(jù)記錄到單板的高端內(nèi)存后,在單板再次啟動(dòng)的過程中,進(jìn)行黑匣子數(shù)據(jù)的讀取。在系統(tǒng)初始化的過程中,倉(cāng)Il建對(duì)應(yīng)的RAM盤(ramDisk)目錄,在單板重啟上傳黑匣子時(shí),將黑匣子高端內(nèi)存的數(shù)據(jù)以文件的形式記錄到ramDisk下。然后,黑匣子模塊通過文件傳輸協(xié)議(File Transfer Protocol,FTP),直接將該文件上傳至帶有存儲(chǔ)設(shè)備的服務(wù)器下。
[0046]不上傳黑匣子時(shí),信息只是在內(nèi)存里,當(dāng)手動(dòng)發(fā)起黑匣子文件上傳流程時(shí),會(huì)生成黑匣子文件。黑匣子文件的產(chǎn)生可以分為兩種情況:一是手動(dòng)上報(bào)流程中產(chǎn)生黑匣子文件,在該流程中,從操作臺(tái)上發(fā)起命令,該命令被發(fā)送至目標(biāo)單板,目標(biāo)單板收到命令后,啟動(dòng)黑匣子上傳流程。二是自動(dòng)上報(bào)流程中產(chǎn)生黑匣子文件,這是黑匣子文件的主要生成方式。存儲(chǔ)黑匣子的處理器磁盤空間有限,因此,應(yīng)該只保存重要的黑匣子日志。
[0047]在本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)例中,在需要解析異常時(shí),從高端內(nèi)存或外掛內(nèi)存中獲取軟件黑匣子中的數(shù)據(jù);基于黑匣子的結(jié)構(gòu)獲取異常信息,并對(duì)異常信息進(jìn)行分析。由于黑匣子具有統(tǒng)一的結(jié)構(gòu)和接口,因此,可以方便地通過統(tǒng)一的結(jié)構(gòu)和接口獲得異常信息,從而完成對(duì)異常信息的解析。
[0048]在現(xiàn)有技術(shù)中,需要為特定單板專門設(shè)計(jì)軟件黑匣子,軟件黑匣子缺乏通用性。在本實(shí)施例中,軟件黑匣子具有統(tǒng)一的結(jié)構(gòu),軟件黑匣子的結(jié)構(gòu)包括多個(gè)進(jìn)程的記錄區(qū),每個(gè)進(jìn)程的記錄區(qū)包括多個(gè)任務(wù)的記錄區(qū),根據(jù)異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),即可將異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中,從而提高了軟件黑匣子的通用性。
[0049]本發(fā)明實(shí)施例還提供了一種黑匣子的設(shè)計(jì)方法,下面對(duì)該方法進(jìn)行具體說明。
[0050]首先,對(duì)軟件黑匣子進(jìn)行封裝。操作系統(tǒng)的封裝隔離可以通過一層操作系統(tǒng)隔離軟件來實(shí)現(xiàn),通過這一操作系統(tǒng)隔離軟件,能夠屏蔽不同操作系統(tǒng)的差異,對(duì)上層提供統(tǒng)一接口。
[0051]封裝隔離包括:封裝操作系統(tǒng)函數(shù)接口,從而避免不同OS的相同功能由于其接口函數(shù)不同而造成的影響;各個(gè)操作系統(tǒng)具有的功能函數(shù)可能是不同的,有些功能函數(shù)只有部分操作系統(tǒng)支持,即,有的操作系統(tǒng)下有某功能函數(shù),但是有的操作系統(tǒng)下沒有該功能函數(shù),這種功能函數(shù)需要進(jìn)行封裝;操作系統(tǒng)提供的接口服務(wù)不方便黑匣子定位問題,為了方便定位問題而對(duì)系統(tǒng)函數(shù)進(jìn)行封裝,并加入了調(diào)試檢查點(diǎn),異常時(shí)記錄黑匣子。在具體實(shí)現(xiàn)時(shí),可以對(duì)如下幾類操作系統(tǒng)服務(wù)進(jìn)行封裝:基本數(shù)據(jù)類型、文件操作類、內(nèi)存訪問類、定時(shí)器類、信號(hào)量類、消息隊(duì)列類、任務(wù)類、系統(tǒng)異常監(jiān)視類、和通信服務(wù)類。
[0052]軟件黑匣子基于操作系統(tǒng)隔離軟件工作,看不到具體的操作系統(tǒng)。在Iinux操作系統(tǒng)下,可以啟動(dòng)不同的進(jìn)程,在一個(gè)進(jìn)程下又可以啟動(dòng)若干線程,在vxworks的操作系統(tǒng)下,只啟動(dòng)一個(gè)進(jìn)程,在該進(jìn)程下,又可以啟動(dòng)多個(gè)任務(wù),對(duì)于不同的處理器,啟動(dòng)的進(jìn)程、線程也可以有所不同,在數(shù)字信號(hào)處理(Digital Signal Process, DSP)系列處理器下,通常不用操作系統(tǒng),直接運(yùn)行任務(wù)。針對(duì)這種現(xiàn)象,在設(shè)計(jì)黑匣子時(shí),需要考慮了操作系統(tǒng)和處理器的不同,對(duì)不同的單板和不同的處理器上的進(jìn)程、線程(任務(wù))進(jìn)行抽象和統(tǒng)一;針對(duì)記錄內(nèi)容的不同,將黑匣子空間劃分為不同的區(qū)域,例如,包括:異常區(qū)、任務(wù)區(qū),信息區(qū)等,每個(gè)區(qū)域有不同的寫黑匣子接口 ;區(qū)別不同的用戶,各個(gè)用戶注冊(cè),分配不同的黑匣子區(qū)間,各用戶使用不同的黑匣子區(qū)間,此處的用戶指的是模塊,用戶可以主動(dòng)記錄異常信肩、O
[0053]軟件黑匣子需要記錄的數(shù)據(jù)是和應(yīng)用是緊密相關(guān)的。一方面,軟件黑匣子記錄的數(shù)據(jù)是為了測(cè)試和診斷所用,必須記錄足夠的、關(guān)鍵的數(shù)據(jù)才有可能找到軟件錯(cuò)誤所在?’另一方面,因?yàn)榧尤胗涗浌δ芎蟛豢杀苊獾貢?huì)增大系統(tǒng)的開銷,影響系統(tǒng)的性能,記錄數(shù)據(jù)越多越頻繁,系統(tǒng)性能受影響的程度越大??梢詫⒑谙蛔拥拇笮『陀涗浶畔⒘吭O(shè)置為可配置的,以便不同能力的單板上的黑匣子能夠更好的工作。
[0054]圖3是本發(fā)明實(shí)施例的軟件黑匣子記錄區(qū)的示意圖,如圖3所示,可以將黑匣子的區(qū)域先按照進(jìn)程進(jìn)行劃分,每個(gè)進(jìn)程的記錄區(qū)的地址大小可以由一個(gè)專用模塊進(jìn)行分配。在每個(gè)進(jìn)程的記錄區(qū)中又分配若干區(qū)間,每個(gè)區(qū)間記錄不同的內(nèi)容,可根據(jù)用戶的要求進(jìn)行劃分,劃分為如下幾個(gè)區(qū)域:用戶區(qū):供用戶自由記錄相關(guān)內(nèi)容;異常區(qū):記錄單板異常后的函數(shù)堆棧;任務(wù)區(qū):可以有若干任務(wù),記錄每個(gè)任務(wù)最近的固定條數(shù)消息;記錄信息區(qū)格式:每條消息的固定格式可以根據(jù)用戶的具體需求進(jìn)行設(shè)計(jì)。
[0055]其中,各區(qū)域黑匣子記錄方法如下:用戶區(qū):由各用戶調(diào)用黑匣子的寫接口自由記錄;異常區(qū):黑匣子模塊自動(dòng)記錄,用戶不必關(guān)注;任務(wù)區(qū):在任務(wù)的入口處記錄,黑匣子模塊自動(dòng)寫黑匣子區(qū)域,要有固定的格式,供黑匣子工具進(jìn)行分析。
[0056]對(duì)于用戶區(qū),需要用戶先申請(qǐng)到ID才可以進(jìn)行記錄。在黑匣子的設(shè)計(jì)中,對(duì)外提供黑匣子的注冊(cè)接口,通過注冊(cè)函數(shù)申請(qǐng)黑匣子區(qū)域存儲(chǔ)空間,黑匣子模塊返回具體的用戶區(qū)ID,用戶根據(jù)提供的寫函數(shù)可以自由地向黑匣子里記錄自己的數(shù)據(jù)。用戶在申請(qǐng)好自己的黑匣子區(qū)域ID后,黑匣子模塊提供寫接口,通過該接口,用戶可以在黑匣子區(qū)域中記錄自己相關(guān)的數(shù)據(jù),記錄的數(shù)據(jù)可以包括:異常信息和用戶重要信息。
[0057]通過該實(shí)施例,軟件黑匣子對(duì)處理器和操作系統(tǒng)進(jìn)行了屏蔽,可工作于各種操作系統(tǒng)、各種單板和各種處理器上;將工作在各個(gè)單板處理器上的軟件實(shí)體歸類到不同的進(jìn)程、線程、任務(wù)中記錄,軟件黑匣子具有統(tǒng)一的結(jié)構(gòu)和接口,提高了軟件黑匣子的通用性。
[0058]需要說明的是,對(duì)于方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明實(shí)施例并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明實(shí)施例,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本發(fā)明實(shí)施例所必須的。
[0059]參照?qǐng)D4,示出了本發(fā)明一種異常信息的記錄裝置實(shí)施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:
[0060]檢測(cè)單元402,用于檢測(cè)到軟件的異常信息;
[0061]記錄單元404,用于根據(jù)異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),將異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中,其中,軟件黑匣子的結(jié)構(gòu)包括多個(gè)進(jìn)程的記錄區(qū),每個(gè)進(jìn)程的記錄區(qū)包括多個(gè)任務(wù)的記錄區(qū)。
[0062]圖5示出了本發(fā)明一種異常信息的記錄裝置實(shí)施例的優(yōu)選的結(jié)構(gòu)框圖,如圖5所示,上述裝置還包括:
[0063]封裝單元502,用于為軟件黑匣子封裝操作系統(tǒng)。
[0064]在本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)例中,封裝單元502用于:
[0065]為軟件黑匣子封裝操作系統(tǒng)函數(shù)接口 ;
[0066]為軟件黑匣子封裝只有部分操作系統(tǒng)支持的功能函數(shù)。
[0067]在本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)例中,每個(gè)進(jìn)程的記錄區(qū)中還包括:用戶區(qū)和異常區(qū),其中,用戶區(qū)記錄用戶提供的異常記錄,異常區(qū)記錄單板異常后的函數(shù)堆棧。
[0068]在本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)例中,每個(gè)任務(wù)的記錄區(qū)包括:多個(gè)記錄,每個(gè)記錄包括:記錄序列號(hào)、信息類型、時(shí)間戳、和用戶標(biāo)識(shí)ID。
[0069]在本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)例中,上述裝置還包括:
[0070]存儲(chǔ)單元504,用于將軟件黑匣子中的數(shù)據(jù)存儲(chǔ)到高端內(nèi)存或外掛內(nèi)存中。
[0071]在本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)例中,上述裝置還包括:
[0072]獲取單元506,用于從高端內(nèi)存或外掛內(nèi)存中獲取軟件黑匣子中的數(shù)據(jù);
[0073]分析單元508,用于基于黑匣子的結(jié)構(gòu)獲取異常信息,并對(duì)異常信息進(jìn)行分析。
[0074]對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
[0075]本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
[0076]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明實(shí)施例的實(shí)施例可提供為方法、裝置、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明實(shí)施例可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明實(shí)施例可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0077]本發(fā)明實(shí)施例是參照根據(jù)本發(fā)明實(shí)施例的方法、終端設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0078]這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
[0079]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備上,使得在計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0080]盡管已描述了本發(fā)明實(shí)施例的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明實(shí)施例范圍的所有變更和修改。
[0081]最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設(shè)備中還存在另外的相同要素。
[0082]以上對(duì)本發(fā)明所提供的一種異常信息的記錄方法和裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
【權(quán)利要求】
1.一種異常信息的記錄方法,其特征在于,包括: 檢測(cè)到軟件的異常信息; 根據(jù)所述異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),將所述異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中,其中,所述軟件黑匣子的結(jié)構(gòu)包括多個(gè)進(jìn)程的記錄區(qū),每個(gè)進(jìn)程的記錄區(qū)包括多個(gè)任務(wù)的記錄區(qū)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在根據(jù)所述異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),將所述異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中之前,所述方法還包括: 為所述軟件黑匣子封裝操作系統(tǒng)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,為所述軟件黑匣子封裝操作系統(tǒng)包括: 為所述軟件黑匣子封裝操作系統(tǒng)函數(shù)接口; 為所述軟件黑匣子封裝只有部分操作系統(tǒng)支持的功能函數(shù)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述每個(gè)進(jìn)程的記錄區(qū)還包括:用戶區(qū)和異常區(qū),其中,所述用戶區(qū)記錄用戶提供的異常記錄,所述異常區(qū)記錄單板異常后的函數(shù)堆棧。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,每個(gè)任務(wù)的記錄區(qū)包括多個(gè)記錄,每個(gè)記錄包括:記錄序列號(hào)、信息類型、時(shí)間戳、和用戶標(biāo)識(shí)ID。
6.根據(jù)權(quán)利要求1至5中任一項(xiàng)所述的方法,其特征在于,在根據(jù)所述異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),將所述異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中之后,所述方法還包括: 將所述軟件黑匣子中的數(shù)據(jù)存儲(chǔ)到高端內(nèi)存或外掛內(nèi)存中。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在將所述軟件黑匣子中的數(shù)據(jù)存儲(chǔ)到高端內(nèi)存或外掛內(nèi)存中之后,所述方法還包括: 從所述高端內(nèi)存或外掛內(nèi)存中獲取所述軟件黑匣子中的數(shù)據(jù); 基于所述黑匣子的結(jié)構(gòu)獲取異常信息,并對(duì)所述異常信息進(jìn)行分析。
8.一種異常信息的記錄裝置,其特征在于,包括: 檢測(cè)單元,用于檢測(cè)到軟件的異常信息; 記錄單元,用于根據(jù)所述異常信息對(duì)應(yīng)的進(jìn)程和任務(wù),將所述異常信息記錄到軟件黑匣子中相應(yīng)的進(jìn)程和任務(wù)的記錄區(qū)中,其中,所述軟件黑匣子的結(jié)構(gòu)包括多個(gè)進(jìn)程的記錄區(qū),每個(gè)進(jìn)程的記錄區(qū)包括多個(gè)任務(wù)的記錄區(qū)。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 封裝單元,用于為所述軟件黑匣子封裝操作系統(tǒng)。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述封裝單元用于: 為所述軟件黑匣子封裝操作系統(tǒng)函數(shù)接口; 為所述軟件黑匣子封裝只有部分操作系統(tǒng)支持的功能函數(shù)。
11.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述每個(gè)進(jìn)程的記錄區(qū)中還包括:用戶區(qū)和異常區(qū),其中,所述用戶區(qū)記錄用戶提供的異常記錄,所述異常區(qū)記錄單板異常后的函數(shù)堆棧。
12.根據(jù)權(quán)利要求8所述的裝置,其特征在于,每個(gè)任務(wù)的記錄區(qū)包括:多個(gè)記錄,每個(gè)記錄包括:記錄序列號(hào)、信息類型、時(shí)間戳、和用戶標(biāo)識(shí)ID。
13.根據(jù)權(quán)利要求8至12中任一項(xiàng)所述的裝置,其特征在于,所述裝置還包括: 存儲(chǔ)單元,用于將所述軟件黑匣子中的數(shù)據(jù)存儲(chǔ)到高端內(nèi)存或外掛內(nèi)存中。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述裝置還包括: 獲取單元,用于從所述高端內(nèi)存或外掛內(nèi)存中獲取所述軟件黑匣子中的數(shù)據(jù); 分析單元,用于基于所述黑匣子的結(jié)構(gòu)獲取異常信息,并對(duì)所述異常信息進(jìn)行分析。
【文檔編號(hào)】G06F11/34GK104331359SQ201410610782
【公開日】2015年2月4日 申請(qǐng)日期:2014年11月3日 優(yōu)先權(quán)日:2014年11月3日
【發(fā)明者】弋景峰, 王雪平 申請(qǐng)人:大唐移動(dòng)通信設(shè)備有限公司