新四季網

一種程序狀態的故障定位方法

2023-08-08 10:19:51 1

專利名稱:一種程序狀態的故障定位方法
技術領域:
本發明涉及一種程序狀態的故障定位方法。
2、利用程序堆棧來定位,這種方法同樣需要仿真器或實時作業系統的支持,就是在存儲器中設立專用的堆棧區,在程序運行時,將程序的指針、堆棧的指針、各寄存器內容、用戶設置的變量的值等壓入棧中。在程序出現異常時,停止程序的運行,檢查棧內的內容,以此來定位故障。這種方法在程序出現異常後很快檢查堆棧區時,能夠很快定位故障。但是往往會出現這種情況在程序出現異常之後,或者是監控人很長時間才發現程序已經出現異常,這時候堆棧已經變的面目全非了,很難回溯到異常點,也就很難定位故障了。
由此可見,現有技術中常用的這兩種故障定位方法不能完整的記錄程序運行過程中的各種信息,因此對於程序在全速及滿負荷下運行時出現的異常情況,很難做出故障定位。
為達到上述目的,本發明的技術方案是這樣的一種程序狀態的故障定位方法,其特徵為該方法至少包括以下幾個步驟1)設計一個用於記錄程序運行狀態和故障定位的黑匣記錄程序;2)將黑匣記錄程序植入到系統的不可屏蔽中斷程序和能被系統調用的系統的子程序中;3)黑匣記錄程序在系統的子程序被調用時記錄子程序的運行狀態,生成與子程序對應的記錄的單向鍊表,並填入到預先設置的靜態存儲區的首尾相接的環行鍊表中;4)在黑匣記錄程序重新初始化系統的輸出通道時,輸出用於定位故障的記錄結果。
其中的步驟2)還可以包括在能被系統調用的子程序的最前端和最後端各植入一個黑匣記錄程序,且不可屏蔽中斷程序可以設置為外部條件觸發,例如定時觸發或手動觸發。
步驟3)所述的記錄的單向鍊表,其結構可以設置為至少包括表頭、鍊表內容和表尾,其鍊表內容包含了被系統調用的子程序指針、堆棧指針、寄存器內容及至少一個用戶設置的變量名及其變量值。
該方法中所述的環行鍊表的結構可以設置為包括一個用於將記錄的單向鍊表填入環行鍊表的環行鍊表入口,和一個以上記錄的單向鍊表,各個記錄的單向鍊表的表頭依次順序相連,且最後一個記錄的單向鍊表的表頭與第一個記錄的單向鍊表的表頭相連。
其中的步驟4)可以是在觸發了不可屏蔽中斷程序後,由植入在不可屏蔽中斷程序的黑匣記錄程序重新初始化系統的輸出通道,完成記錄結果的輸出;其記錄結果可以為由黑匣記錄程序填入到環行鍊表的所有記錄的單向鍊表的內容、或系統堆棧的所有內容;該記錄結果以文件形式輸出,記錄結果輸出後,清空環行鍊表。
該方法中所述的黑匣記錄程序,每執行一次生成一個程序狀態記錄,並可以按生成的先後順序填入到環行鍊表中,當環行鍊表被填滿時,從最先的程序狀態記錄開始覆蓋。
由上述方案可以看出,本發明的關鍵在於在系統的不可屏蔽中斷程序和每一個能被系統調用的子程序的最前端和最後端加入黑匣記錄程序,在程序運行的同時黑匣記錄程序記錄程序指針、堆棧指針、棧內容、各寄存器內容、用戶設置需要記錄的變量名及變量值等,通過觸發不可屏蔽中斷程序,由植入其中的黑匣記錄程序重新初始化系統的輸出通道,輸出記錄結果,監控人員根據輸出結果定位故障。
本發明所提供的這種程序狀態的故障定位方法,實現了在程序全速、滿負荷運行條件下記錄程序的運行狀態,和快速定位故障,它具有以下的特點和優點
1、本發明方案在程序全速、滿負荷運行條件下記錄程序的運行狀態,因此記錄準確、及時。
2、本發明的專用存儲區設置成環行鍊表首尾相接,可以長時間記錄程序運行狀態。
3、本發明方案在每個能被系統調用的子程序的最前端和最後端加入了黑匣記錄程序,使得每個子程序被調用一次就可以生成兩條調用記錄,這樣就記錄了該子程序調用前和調用後的情況,在定位故障時,可以很清楚的看到子程序調用的前後狀況,使監控人員很快查找到程序的異常點,因此提高了程序異常定位的效率,節約了開發時間。
4、本發明方案在系統軟體中加入黑匣記錄程序,黑匣記錄程序不對系統的硬體進行控制,因此基本不影響程序的正常運行。
5、本發明方案能在程序全速、滿負荷運行條件下完整的記錄程序的運行狀態,因此本發明方案也可用於產品出廠前的整機測試中,測試人員通過分析記錄結果,確定產品是否合格。
圖2為記錄的單向鍊表的結構。
圖3為環行記錄鍊表的結構示意圖。
本發明的技術方案完成的功能類似於飛機上用於記錄飛行狀態的黑匣子,故稱本發明技術為黑匣記錄技術,稱用於記錄程序運行狀態的程序為黑匣記錄程序。本發明的一個具體實施例是將它應用到一種路由器的程序故障定位中。它的具體實施內容是這樣的1、設計一個黑匣記錄程序,該程序實現下述功能1)在系統運行時,記錄程序的運行狀態,並將記錄結果填入預先設置的靜態存儲區;2)初始化系統的輸出通道,輸出記錄結果。
2、設置專用於存儲程序狀態的存儲區,將路由器內存擴展一倍,將擴展後的路由器一半內存容量仍分配給路由器使用,將後半容量配置成靜態存儲區,並以環行鍊表形式首尾相接。
本實施例中用於存儲記錄的專用存儲區為系統內存的一半。這樣大的內存,使存儲的記錄信息完整,足夠用於回溯到程序的異常點。當然,專用存儲區的容量不必一定為系統內存的一半,可以根據系統的實際情況設置,只要保證存儲的記錄信息完整,足夠用於回溯到程序的異常點即可。
3、系統軟體中加入用於記錄程序狀態的黑匣記錄程序,在路由器的不可屏蔽中斷程序中植入黑匣記錄程序,用於輸出記錄結果;在每一個能被系統調用的子程序的最前端和最後端,加入黑匣記錄程序,用於記錄程序的運行狀態。
4、將路由器的植入了黑匣記錄程序的不可屏蔽中斷程序設置成手工觸發。由於路由器處於運行中時,不檢測本身是否處於故障狀態,因此需要外部條件觸發,外部條件觸發包括手工觸發、定時觸發及其它可以引起不可屏蔽中斷程序觸發的外部條件觸發。當發現故障後採用手工觸發的方法最簡單、直接,因此本實施例採用了手工觸發。採用手工觸發的目的是保證路由器在不掉電的情況下數據保存完整。數據也可以存儲於FLASH等數據載體中,這樣,雖然保證了在掉電的情況下數據不丟失,但是FLASH等數據載體容量通常較小且寫入速度慢,記錄的數據量不足夠回溯到異常點,而路由器發生異常掉電的情況很少,因此,本發明不採用FLASH等數據載體來存儲數據;同時,手工觸發(或者定時觸發)不可屏蔽中斷程序,還可以保證在設備異常,程序轉飛或處於死循環狀態下,黑匣記錄程序能夠正確執行。
5、在程序編譯時,確定執行黑匣記錄程序,編譯後的系統軟體為調測版本的系統軟體。
6、將路由器安裝上調測版本的系統軟體,在路由器運行時,黑匣記錄程序記錄每個被調用的子程序的運行狀態,將記錄結果填入到預先設置的靜態存儲區的首尾相接的環行鍊表中,其過程具體是在每一個能被系統調用的子程序的最前端和最後端,加入了黑匣記錄程序,其流程圖參見

圖1。如圖1所示,子程序開始調用時先執行步驟101,調用黑匣記錄程序,然後執行步驟102,運行子程序體,在子程序調用結束前執行步驟103,調用黑匣記錄程序。以此來記錄程序調用前和調用後的程序指針、堆棧指針、寄存器內容、用戶設置記錄的變量名及其變量值。由於在每個能被系統調用的子程序的最前端和最後端都加入了黑匣記錄程序,因此,每個子程序被調用一次就執行兩次黑匣記錄程序,也就生成兩條記錄的單向鍊表。從這兩條記錄的單向鍊表可以清楚的看到子程序調用前後的狀況,可以加快故障定位的速度。
本實施例的記錄的單向鍊表的結構參見圖2。圖2中210「調用記錄1」為該鍊表的表頭,230「NULL」為鍊表的表尾,其他部分220是鍊表內容,鍊表內容包括了221程序指針、222堆棧指針、223寄存器內容、和n個224用戶設置記錄的變量名及變量值。各記錄的單向鍊表生成後按生成的先後順序填入到環行鍊表中,即填入到預先設置的靜態存儲區。
環行鍊表結構參見圖3。如圖3所示,圖中用N個210「調用記錄」來示意N個記錄的單向鍊表的表頭。圖中的230「NULL」示意每條記錄的單向鍊表的表尾。圖中的220鍊表內容為每條記錄的單向鍊表的鍊表內容。由圖3可見,環行鍊表的內容是各個記錄的單向鍊表,即將每條記錄的單向鍊表的表頭依次順序相連,且最後一個記錄的單向鍊表的表頭與第一個記錄的單向鍊表的表頭相連成為環行鍊表。另外,環行鍊表還包含一個300環行鍊表入口,用於將記錄的單向鍊表填入到環行鍊表中。
靜態存儲區設置成環行鍊表的目的,主要是為了黑匣記錄程序能長時間工作。由於一些故障需要長時間積累才能表現出來,但是內存的容量是有限的,如設計成單向鍊表記錄一段時間就會溢出,所以設置成環行鍊表。由於各記錄的單向鍊表按生成的先後順序填入到環行鍊表中,因此當環行鍊表記錄填滿時,從最早的記錄開始覆蓋,這樣能夠確保將最新發生的事件記錄下來。
7、監控人員發現異常時,通過手工觸發不可屏蔽中斷程序,植入其中的黑匣記錄程序重新初始化路由器系統的輸出通道,輸出記錄結果;記錄結果為由黑匣記錄程序填入到環行鍊表的所有單向鍊表的內容、或系統堆棧的所有內容;本實施例輸出的是環行鍊表的內容,該記錄結果以文件形式輸出,記錄結果輸出後,清空環行鍊表。
監控人員根據輸出的文件中的記錄結果定位故障。
本實施例在路由器程序運行的異常定位過程中,依據記錄的數據,很快定位到了程序的異常點,節約了開發時間。
本發明方案的實施例是在路由器上實施的,但它不僅限用於路由器,在其他的應用通信協議較多的數據通信設備上,如乙太網交換機等設備都可以使用。
本發明方案實現了在程序全速、滿負荷運行條件下記錄程序的運行狀態和快速定位故障。因此,本發明方案適用於路由器等系統程序龐大且複雜的數據通信設備,具有程序記錄信息完整、基本不影響程序的正常運行和程序異常定位效率高的優點。
以上舉較佳實施例,對本發明的目的、技術方案和優點進行了進一步詳細說明,所應理解的是,以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。
權利要求
1.一種程序狀態的故障定位方法,其特徵為該方法至少包括以下幾個步驟1)設計一個用於記錄程序運行狀態和故障定位的黑匣記錄程序;2)將黑匣記錄程序植入到系統的不可屏蔽中斷程序和能被系統調用的系統的子程序中;3)黑匣記錄程序在系統的子程序被調用時記錄子程序的運行狀態,生成與子程序對應的記錄的單向鍊表,並填入到預先設置的靜態存儲區的首尾相接的環行鍊表中;4)在黑匣記錄程序重新初始化系統的輸出通道時,輸出用於定位故障的記錄結果。
2.如權利要求1所述的程序狀態的故障定位方法,其特徵在於步驟2)包括在能被系統調用的子程序的最前端和最後端各植入一個黑匣記錄程序。
3.如權利要求1所述的程序狀態的故障定位方法,其特徵在於步驟2)中所述的不可屏蔽中斷程序設置為外部條件觸發,包括定時觸發。
4.如權利要求1所述的程序狀態的故障定位方法,其特徵在於步驟3)所述的記錄的單向鍊表,其結構至少包括表頭、鍊表內容和表尾,其鍊表內容包含了被系統調用的子程序指針、堆棧指針、寄存器內容及至少一個用戶設置的變量名及其變量值。
5.如權利要求1所述的程序狀態的故障定位方法,其特徵在於所述的環行鍊表的結構包括一個用於將記錄的單向鍊表填入環行鍊表的環行鍊表入口,和一個以上記錄的單向鍊表;各個記錄的單向鍊表的表頭依次順序相連,且最後一個記錄的單向鍊表的表頭與第一個記錄的單向鍊表的表頭相連。
6.如權利要求1所述的程序狀態的故障定位方法,其特徵在於步驟4)是在觸發了不可屏蔽中斷程序後,由植入在不可屏蔽中斷程序的黑匣記錄程序重新初始化系統的輸出通道。
7.如權利要求1所述的程序狀態的故障定位方法,其特徵在於步驟4)所述的記錄結果為由黑匣記錄程序填入到環行鍊表的所有單向鍊表的內容、或系統堆棧的所有內容;該記錄結果以文件形式輸出,記錄結果輸出後,清空環行鍊表。
8.如權利要求1所述的程序狀態的故障定位方法,其特徵在於所述的記錄的單向鍊表按生成的先後順序填入到環行鍊表中,當環行鍊表被填滿時,從最先記錄的單向鍊表開始覆蓋。
全文摘要
本發明公開了一種程序狀態的故障定位方法,可快速定位程序運行中的故障,其特徵為該方法至少包括以下幾個步驟1)設計一個用於記錄程序運行狀態和故障定位的黑匣記錄程序;2)將黑匣記錄程序植入到系統的不可屏蔽中斷程序和能被系統調用的系統的子程序中;3)黑匣記錄程序在系統的子程序被調用時記錄子程序的運行狀態,生成記錄的單向鍊表並填入到預先設置的靜態存儲區的首尾相接的環行鍊表中;4)在黑匣記錄程序重新初始化系統的輸出通道時,輸出用於定位故障的記錄結果。本發明適用於路由器等系統程序龐大且複雜的數據通信設備,具有程序記錄信息完整、基本不影響程序的正常運行和程序異常定位效率高的優點。
文檔編號H04B17/00GK1414711SQ0211792
公開日2003年4月30日 申請日期2002年5月23日 優先權日2002年5月23日
發明者湯勇, 徐在水 申請人:華為技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀