一種程序執(zhí)行順序診斷方法與系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及故障診斷技術(shù)領(lǐng)域,特別是涉及一種程序執(zhí)行順序診斷方法與系統(tǒng)。
【背景技術(shù)】
[0002]軟件程序在運(yùn)行的過(guò)程中可能會(huì)出現(xiàn)內(nèi)部程序執(zhí)行順序異常的問(wèn)題,當(dāng)軟件程序的程序執(zhí)行順序異常時(shí),可能會(huì)造成系統(tǒng)不受外界電磁場(chǎng)干擾而使程序跑飛,使程序的正常運(yùn)行被打斷,或者由于軟件自身設(shè)計(jì)問(wèn)題出現(xiàn)內(nèi)部越界、堆棧溢出、死鎖等因素造成程序崩潰,這些都將可能導(dǎo)致軟件程序在運(yùn)行期出現(xiàn)不可預(yù)知的結(jié)果,對(duì)系統(tǒng)的確定性和安全性產(chǎn)生危害,為了避免這一危害的產(chǎn)生,需要系統(tǒng)能夠診斷出程序的程序執(zhí)行順序是否異常。
[0003]目前,通常采用軟件來(lái)對(duì)被診斷程序的程序執(zhí)行順序?qū)嵤┰\斷,通過(guò)診斷軟件監(jiān)視被診斷程序的程序執(zhí)行順序,來(lái)判斷被診斷程序的程序執(zhí)行順序是否異常,診斷軟件可以檢測(cè)到被診斷程序目前的執(zhí)行順序,通過(guò)檢測(cè)得到的被診斷程序目前的執(zhí)行順序與正確的程序執(zhí)行順序相對(duì)比,來(lái)診斷被診斷程序各個(gè)階段的運(yùn)行順序是否正確。如,診斷軟件可檢測(cè)到被診斷程序目前的執(zhí)行順序?yàn)閱?dòng)后先運(yùn)行第一階段,第一階段后運(yùn)行第三階段,而正確的程序執(zhí)行順序應(yīng)該為啟動(dòng)后先運(yùn)行第一階段,第一階段后運(yùn)行第二階段,由此,可以判斷被診斷程序執(zhí)行順序出現(xiàn)問(wèn)題。
[0004]由診斷軟件監(jiān)視被診斷程序的執(zhí)行邏輯,來(lái)判斷被診斷程序的程序執(zhí)行順序是否異常,雖然功能靈活,但是,由于診斷軟件依賴系統(tǒng)主時(shí)鐘,當(dāng)系統(tǒng)主時(shí)鐘出現(xiàn)錯(cuò)誤的情況下,診斷軟件將出現(xiàn)共因故障;另一方面,由于診斷軟件其自身也為軟件,其在處理器內(nèi)運(yùn)行時(shí),也可能會(huì)出現(xiàn)內(nèi)部程序執(zhí)行順序異常、程序崩潰等問(wèn)題,若診斷軟件自身出現(xiàn)異常,則無(wú)法正確地診斷出被診斷軟件的程序順序是否異常,使得程序執(zhí)行順序的診斷結(jié)果可靠性較低。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明實(shí)施例提供一種軟硬件相結(jié)合的程序執(zhí)行順序診斷方法及系統(tǒng),以解決現(xiàn)有技術(shù)中采用診斷軟件來(lái)對(duì)被診斷程序的程序執(zhí)行順序進(jìn)行診斷,而造成的診斷結(jié)果的可靠性較低的問(wèn)題。
[0006]為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供如下技術(shù)方案:
[0007]一種程序執(zhí)行順序診斷方法,基于獨(dú)立時(shí)鐘的可編程邏輯器件,包括:
[0008]獲取處理器檢測(cè)到的被診斷程序的下一程序階段標(biāo)志;
[0009]判斷是否在預(yù)定的時(shí)間窗內(nèi)獲取正確的下一程序階段標(biāo)志,若不是,判定被診斷程序執(zhí)行順序異常。
[0010]其中,所述判斷是否在預(yù)定時(shí)間窗內(nèi)獲取正確的下一程序階段標(biāo)志包括:
[0011]根據(jù)預(yù)先設(shè)置的各個(gè)程序階段對(duì)應(yīng)的執(zhí)行時(shí)間窗判斷是否為在下一程序階段對(duì)應(yīng)的執(zhí)行時(shí)間窗內(nèi)獲取到下一程序階段標(biāo)志,若不是,則被診斷程序執(zhí)行順序異常。
[0012]和/或,根據(jù)預(yù)先設(shè)置的程序執(zhí)行順序邏輯關(guān)系判斷程序執(zhí)行順序邏輯是否正確,若不正確,則判定被診斷程序執(zhí)行順序異常。
[0013]其中,所述根據(jù)預(yù)先設(shè)置的程序執(zhí)行順序邏輯關(guān)系判斷程序執(zhí)行順序邏輯是否正確包括:
[0014]確定當(dāng)前程序階段標(biāo)志,根據(jù)當(dāng)前程序階段標(biāo)志和預(yù)先設(shè)置的程序執(zhí)行順序邏輯關(guān)系,確定正確的下一程序階段標(biāo)志;
[0015]判斷獲取的下一程序階段標(biāo)志和正確的下一程序階段標(biāo)志是否相同,若不同,則判定程序執(zhí)行順序邏輯不正確。
[0016]其中,所述程序執(zhí)行順序診斷方法還包括:
[0017]獲取處理器檢測(cè)到的被診斷程序的終止標(biāo)志;若獲取到終止標(biāo)志,則停止診斷。
[0018]其中,獲取系統(tǒng)處理器檢測(cè)到的下一程序階段標(biāo)志后還包括:
[0019]確定已獲取的程序階段標(biāo)志的數(shù)目;
[0020]判斷已獲取的程序階段標(biāo)志的數(shù)目是否大于預(yù)先設(shè)置的需檢測(cè)的總階段數(shù),若大于,則停止診斷。
[0021]一種程序執(zhí)行順序診斷系統(tǒng),包括獲取模塊和判斷模塊,其中,
[0022]所述獲取模塊,用于獲取處理器檢測(cè)到的被診斷程序的下一程序階段標(biāo)志;
[0023]所述判斷模塊,用于判斷是否在預(yù)定時(shí)間窗內(nèi)獲取正確的下一程序階段標(biāo)志,若不是,判定被診斷程序執(zhí)行順序異常。
[0024]其中,所述程序執(zhí)行順序診斷系統(tǒng)還包括:
[0025]執(zhí)行時(shí)間窗設(shè)置模塊,用于設(shè)置各個(gè)程序階段對(duì)應(yīng)的執(zhí)行時(shí)間窗;
[0026]其中,所述判斷模塊包括:
[0027]執(zhí)行時(shí)間檢測(cè)單元,用于根據(jù)預(yù)先設(shè)置的各個(gè)程序階段對(duì)應(yīng)的執(zhí)行時(shí)間窗判斷是否為在下一程序階段對(duì)應(yīng)的執(zhí)行時(shí)間窗內(nèi)獲取到下一程序階段標(biāo)志,若不是,則判定被診斷程序執(zhí)行順序異常。
[0028]其中,所述程序執(zhí)行順序診斷系統(tǒng)還包括:
[0029]邏輯設(shè)置模塊,用于設(shè)置程序執(zhí)行順序邏輯關(guān)系;
[0030]其中,所述判斷模塊包括:
[0031]邏輯檢測(cè)單元,用于根據(jù)預(yù)先設(shè)置的程序執(zhí)行順序邏輯關(guān)系判斷程序執(zhí)行順序邏輯是否正確,若不正確,則判定被診斷程序執(zhí)行順序異常。
[0032]其中,所述邏輯檢測(cè)單元包括:標(biāo)志確定子單元和邏輯判斷子單元,其中,
[0033]所述標(biāo)志確定子單元,用于確定當(dāng)前程序階段標(biāo)志,根據(jù)當(dāng)前程序階段標(biāo)志和預(yù)先設(shè)置的程序執(zhí)行順序邏輯關(guān)系,確定正確的下一程序階段標(biāo)志;
[0034]所述邏輯判斷子單元,用于判斷獲取的下一程序階段標(biāo)志和正確的下一程序階段標(biāo)志是否相同,若不同,則判定程序執(zhí)行順序邏輯不正確。
[0035]其中,所述程序執(zhí)行順序診斷系統(tǒng)還包括:
[0036]階段總數(shù)設(shè)置模塊和階段總數(shù)判斷模塊;
[0037]其中,所述階段總數(shù)設(shè)置模塊,用于設(shè)置需檢測(cè)的總階段數(shù);
[0038]其中,所述階段總數(shù)判斷模塊,用于確定已獲取的程序階段標(biāo)志的數(shù)目,并判斷已獲取的程序階段標(biāo)志的數(shù)目是否大于預(yù)先設(shè)置的需檢測(cè)的總階段數(shù),若大于,則停止工作。
[0039]基于上述技術(shù)方案,本發(fā)明實(shí)施例提供的程序執(zhí)行順序診斷方法及系統(tǒng),基于獨(dú)立時(shí)鐘的可編程邏輯器件,通過(guò)可編程邏輯器件獲取處理器檢測(cè)到的被診斷程序中的下一程序階段標(biāo)志,可編程邏輯器件在獲得處理器檢測(cè)到的被診斷程序中的下一程序階段標(biāo)志后根據(jù)預(yù)先設(shè)置的各個(gè)程序階段對(duì)應(yīng)的執(zhí)行時(shí)間窗,判斷是否為在下一程序階段對(duì)應(yīng)的執(zhí)行時(shí)間窗內(nèi)獲取到下一程序階段標(biāo)志,和/或,根據(jù)預(yù)先設(shè)置的程序執(zhí)行順序邏輯關(guān)系判斷程序執(zhí)行順序邏輯是否正確,若可編程邏輯器件判定并非在下一程序階段對(duì)應(yīng)的執(zhí)行時(shí)間窗內(nèi)獲取到下一程序階段標(biāo)志,和/或,可編程邏輯器件判定程序執(zhí)行順序邏輯不正確,則可編程邏輯器件都將會(huì)判定被診斷程序的執(zhí)行順序異常。由可編程邏輯器件來(lái)對(duì)被診斷程序的程序執(zhí)行順序進(jìn)行診斷,由于可編程邏輯器件獨(dú)立于系統(tǒng)之外,內(nèi)部使用獨(dú)立的時(shí)鐘,不依賴系統(tǒng)主時(shí)鐘,因此,避免系統(tǒng)主時(shí)鐘出錯(cuò)情況下的共因故障,同時(shí),由于可編程邏輯器件為硬件,使用硬件來(lái)對(duì)程序執(zhí)行順序進(jìn)行診斷,也避免了現(xiàn)有技術(shù)中使用診斷軟件來(lái)對(duì)被診斷程序執(zhí)行順序進(jìn)行診斷而帶來(lái)診斷軟件本身的執(zhí)行順序邏輯錯(cuò)亂問(wèn)題和程序崩潰問(wèn)題,使對(duì)被診斷程序的程序執(zhí)行順序的診斷結(jié)果更加可靠。
【附圖說(shuō)明】
[0040]為了更清楚地說(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ù)提供的附圖獲得其他的附圖。
[0041]圖1為本發(fā)明實(shí)施例提供的程序執(zhí)行順序診斷方法的流程圖;
[0042]圖2為本發(fā)明實(shí)施例提供的程序執(zhí)行順序診斷方法中判斷獲取的下一程序階段標(biāo)志是否正確的方法流程圖;
[0043]圖3為本發(fā)明實(shí)施例提供的程序執(zhí)行順序診斷方法中判斷獲取的下一程序階段標(biāo)志是否正確的另一方法流程圖;
[0044]圖4為本發(fā)明實(shí)施例提供的程序執(zhí)行順序診斷方法中判斷程序執(zhí)行順序邏輯是否正確的方法流程圖;
[0045]圖5為本發(fā)明實(shí)施例提供的程序執(zhí)行順序診斷方法的另一流程圖;
[0046]圖6為本發(fā)明實(shí)施例提供的程序執(zhí)行順序診斷方法中判斷的獲取的程序階段是否超過(guò)總階段數(shù)的方法流程圖;
[0047]圖7為本發(fā)明實(shí)施例提供的程序執(zhí)行順診斷系統(tǒng)的系統(tǒng)框圖;
[0048]圖8為本發(fā)明實(shí)施例提供的程序執(zhí)行順序診斷系統(tǒng)的另一系統(tǒng)框圖;
[0049]圖9為本發(fā)明實(shí)施例提供的程序執(zhí)行順序診斷系統(tǒng)的再一系統(tǒng)框圖;
[0050]圖10為本發(fā)明實(shí)施例提供的程序執(zhí)行順序診斷系統(tǒng)中邏輯檢測(cè)單元的結(jié)構(gòu)框圖;
[0051]圖11為本發(fā)明實(shí)施例提供的程序執(zhí)行順序診斷系統(tǒng)的又一系統(tǒng)框圖。
【具體實(shí)施方式】
[0052]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)