System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及軟件故障診斷,更具體地說涉及一種基于故障日志的場景復現方法、設備及儲存介質。
技術介紹
1、隨著軟件規模的上升,診斷軟件故障是一個比較復雜的問題。對于安全苛求軟件,其軟件故障如果不能正確識別,可能導致極其嚴重的后果。
2、現有技術中,中國專利公開號為cn107145422b的專利,公開了一種軟件故障報警監測方法,通過檢查契約的前置條件,后置條件和不變項,保證軟件始終運行在期望且確定的狀態空間,當偵測到異常時,記錄異常報警信息的唯一絕對路徑。根據軟件報警位置,后續還需要人工對日志文件進行分析和推導,才能推導出導致故障的根本原因。人工分析的方法依賴于分析人員的素質,當問題復雜到一定程度,間接推導的方法既耗費大量時間又容易出現遺漏。
3、當故障時刻的場景可以復現時,分析人員可以直接查看軟件的各個模塊數據狀態,將極大減少分析推導時間,迅速定位問題的根本原因。因此對故障時刻的場景進行復現,可以提高故障診斷的效率,成為需要解決的技術問題。
技術實現思路
1、為了克服上述現有技術中存在的缺陷,本專利技術公開了一種基于故障日志的場景復現方法、設備及儲存介質,本專利技術在軟件故障時將軟件內部狀態數據記錄到故障日志,利用故障日志恢復軟件故障時刻的內部狀態數據,然后加載到軟件仿真環境中實現場景精確復現,分析人員可以直接查看軟件的各個模塊數據狀態,將極大減少分析推導時間,迅速定位問題的根本原因。
2、為了實現以上目的,本專利技術采用的技術方案:
4、一、故障數據表配置
5、s1、軟件初始化時將復現故障場景所需信息配置到故障數據表;
6、作為優選的技術方案,步驟s1中復現故障場景所需信息包括:上周期的軟件狀態、本周期外部輸入、本周期故障時刻的軟件狀態。這些信息在軟件初始化時配置到故障數據表中。
7、本專利技術中,上周期的軟件狀態使用教育數據描述;教育數據是用于主備雙系運行時的同步數據,可以將備系運行狀態完全同步到主系上一個周期末的狀態,將教育數據通過教育學習模塊賦值后備系內部狀態即等價于主系上周期結束時的內部狀態,以達到主系備系在本周期運行時具備相同的起點;教育數據每一個周期末更新一次,該信息存儲于教育數據全局變量;使用該數據可以將軟件的狀態復位到上周期結束時刻的狀態,也等價于本周期開始時刻的狀態。
8、本周期外部輸入包含本周期接收的所有外部消息,按照接收順序存儲于輸入數據全局變量。
9、本周期故障時刻的軟件狀態通過軟件內部所有業務對象的全局變量描述。
10、作為優選的技術方案,步驟s1中故障數據表用于記錄故障恢復需要使用的全局變量信息,包括:全局變量名稱、存儲地址、數據原子類型、數據數目、數據原子長度,其中:
11、當全局變量是數組類型時,數據原子類型是數組的一個元素的類型,數據原子長度是數組的一個元素的長度,數據數目是數組的最大存儲元素數目;
12、當全局變量不是數組類型時,數據原子類型是全局變量的類型,數據原子長度是全局變量的長度,數據數目是1;
13、數據數目乘以數據原子長度等價于該全局變量的存儲空間長度。
14、二、故障日志記錄軟件異常報警
15、s2、基于故障數據表,軟件異常報警時記錄報警位置和軟件內部狀態數據到故障日志;
16、作為優選的技術方案,步驟s2軟件異常報警時記錄報警位置,其報警位置描述為從系統運行的最頂層模塊到當前執行模塊的相對路徑,按照模塊執行順序組成有序序列信息表示;其中,序列一個成員代表一個模塊的執行路徑描述,其由靜態模塊編碼和動態模塊編碼組成,其中靜態模塊編碼唯一對應一個模塊名稱,動態模塊編碼描述父模塊調用該模塊的相對位置。詳見中國專利公開號cn107145422b描述。
17、作為優選的技術方案,步驟s2軟件異常報警時記錄軟件內部狀態數據到故障日志,包括:根據故障數據表將對應全局變量記錄到故障日志中,故障數據表中每一條數據在故障日志中的記錄格式為:全局變量名稱,數據原子類型,數據數目,數據原子長度,數據值,其中:
18、故障日志中的全局變量名稱、數據原子類型、數據數目分別源自故障數據表中的全局變量名稱、數據原子類型、數據數目;
19、故障日志中的數據值是根據故障數據表中的存儲地址拷貝數據數目乘以數據原子長度的數據;
20、記錄完成后系統宕機以導向安全。
21、三、故障數據賦值模塊生成
22、s3、根據故障日志生成故障數據賦值模塊;
23、作為優選的技術方案,步驟s3包括:根據故障日志記錄的每一條故障數據生成對應的賦值拷貝語句,拷貝的源地址是故障日志中數據值位置,拷貝的目的地址是對故障日志中全局變量名稱進行取地址運算,拷貝的數據長度是故障日志中數據數目乘以數據原子長度。
24、四、故障報警模塊定位
25、s4、根據故障日志定位故障報警模塊;
26、作為優選的技術方案,步驟s4包括:對故障日志的報警位置的序列進行解析,將序列的每一個成員解析為靜態模塊編碼和動態模塊編碼,由此序列獲得故障發生時異常報警信息的唯一絕對路徑,從而定位產生故障報警的函數模塊。
27、五、定位異常數據生成模塊
28、s5、在軟件仿真環境中使用故障數據賦值模塊輸出狀態生成故障報警模塊執行前狀態,復現故障報警場景,追蹤內部異常狀態數據,并定位異常數據生成模塊;
29、作為優選的技術方案,步驟s5在軟件仿真環境中使用故障數據賦值模塊輸出狀態生成故障報警模塊執行前狀態,復現故障報警場景,包括:在軟件仿真環境中,加載故障軟件對應的靜態配置數據,將故障數據賦值模塊產生的故障時刻的軟件狀態,作為故障報警模塊執行前的狀態,以此為基準復現故障報警場景,通過設置斷點方法,查看故障報警模塊內部每一行代碼的執行狀態。
30、作為優選的技術方案,步驟s5追蹤內部異常狀態數據,并定位異常數據生成模塊,包括:異常狀態數據是故障報警的直接原因,但異常狀態數據的生成是由故障報警模塊之前的其它模塊生成的,該模塊被稱為異常數據生成模塊。
31、六、追蹤到故障產生源頭
32、s6、在軟件仿真環境中使用故障數據賦值模塊輸出狀態生成異常數據生成模塊執行前狀態,復現異常數據生成場景,循環該步驟以追蹤到故障產生的源頭。
33、作為優選的技術方案,步驟s6在軟件仿真環境中使用故障數據賦值模塊輸出狀態生成異常數據生成模塊執行前狀態,復現異常數據生成場景,包括:在軟件仿真環境中,加載故障軟件對應的靜態配置數據,將軟件狀態復位到本周期開始時的狀態,以此為基準,使用本周期的外部輸入數據,按照軟件內部模塊時序執行到異常數據生成模塊,復現異常數據生成場景,通過設置斷點方法,查看異常數據生成模塊內部每一行代碼的執行狀態。
...【技術保護點】
1.一種基于故障日志的場景復現方法,其特征在于,包括以下步驟:
2.如權利要求1所述的基于故障日志的場景復現方法,其特征在于,步驟S1中復現故障場景所需信息包括:上周期的軟件狀態、本周期外部輸入、本周期故障時刻的軟件狀態;
3.如權利要求1所述的基于故障日志的場景復現方法,其特征在于,步驟S2軟件異常報警時記錄報警位置,其報警位置描述為從系統運行的最頂層模塊到當前執行模塊的相對路徑,按照模塊執行順序組成有序序列信息表示;其中,序列一個成員代表一個模塊的執行路徑描述,其由靜態模塊編碼和動態模塊編碼組成,其中靜態模塊編碼唯一對應一個模塊名稱,動態模塊編碼描述父模塊調用該模塊的相對位置;
4.如權利要求1所述的基于故障日志的場景復現方法,其特征在于,步驟S3包括:根據故障日志記錄的每一條故障數據生成對應的賦值拷貝語句,拷貝的源地址是故障日志中數據值位置,拷貝的目的地址是對故障日志中全局變量名稱進行取地址運算,拷貝的數據長度是故障日志中數據數目乘以數據原子長度。
5.如權利要求1所述的基于故障日志的場景復現方法,其特征在于,步驟S4包括:對
6.如權利要求1所述的基于故障日志的場景復現方法,其特征在于,步驟S5在軟件仿真環境中使用故障數據賦值模塊輸出狀態生成故障報警模塊執行前狀態,復現故障報警場景,包括:在軟件仿真環境中,加載故障軟件對應的靜態配置數據,將故障數據賦值模塊產生的故障時刻的軟件狀態,作為故障報警模塊執行前的狀態,以此為基準復現故障報警場景,通過設置斷點方法,查看故障報警模塊內部每一行代碼的執行狀態;
7.如權利要求1所述的基于故障日志的場景復現方法,其特征在于,步驟S6在軟件仿真環境中使用故障數據賦值模塊輸出狀態生成異常數據生成模塊執行前狀態,復現異常數據生成場景,包括:在軟件仿真環境中,加載故障軟件對應的靜態配置數據,將軟件狀態復位到本周期開始時的狀態,以此為基準,使用本周期的外部輸入數據,按照軟件內部模塊時序執行到異常數據生成模塊,復現異常數據生成場景,通過設置斷點方法,查看異常數據生成模塊內部每一行代碼的執行狀態;
8.如權利要求7所述的基于故障日志的場景復現方法,其特征在于,步驟S6循環該步驟以追蹤到故障產生的源頭,包括:根據觀察異常數據生成模塊內部狀態,如果異常數據是由于前序異常數據導致的,則定位到該前序異常數據生成模塊,按照步驟S6的方法重新運行軟件仿真環境,加載故障軟件對應的靜態配置數據,將軟件狀態復位到上周期結束時的狀態,以此為基準,使用本周期的外部輸入數據,按照軟件時序執行到前序異常數據生成模塊,復現前序異常數據生成場景;通過設置斷點方法,進入前序異常數據生成模塊內部以觀察內部執行狀態,以此方式不斷循環迭代,以追蹤到故障產生的根本原因。
9.一種電子設備,其特征在于,包括存儲器和處理器,所述存儲器上存儲有計算機程序,所述處理器執行所述計算機程序時實現權利要求1-8任意一項所述基于故障日志的場景復現方法。
10.一種計算機可讀存儲介質,其特征在于,其上存儲有計算機程序,所述計算機程序被處理器執行時實現權利要求1-8任意一項所述基于故障日志的場景復現方法。
...【技術特征摘要】
1.一種基于故障日志的場景復現方法,其特征在于,包括以下步驟:
2.如權利要求1所述的基于故障日志的場景復現方法,其特征在于,步驟s1中復現故障場景所需信息包括:上周期的軟件狀態、本周期外部輸入、本周期故障時刻的軟件狀態;
3.如權利要求1所述的基于故障日志的場景復現方法,其特征在于,步驟s2軟件異常報警時記錄報警位置,其報警位置描述為從系統運行的最頂層模塊到當前執行模塊的相對路徑,按照模塊執行順序組成有序序列信息表示;其中,序列一個成員代表一個模塊的執行路徑描述,其由靜態模塊編碼和動態模塊編碼組成,其中靜態模塊編碼唯一對應一個模塊名稱,動態模塊編碼描述父模塊調用該模塊的相對位置;
4.如權利要求1所述的基于故障日志的場景復現方法,其特征在于,步驟s3包括:根據故障日志記錄的每一條故障數據生成對應的賦值拷貝語句,拷貝的源地址是故障日志中數據值位置,拷貝的目的地址是對故障日志中全局變量名稱進行取地址運算,拷貝的數據長度是故障日志中數據數目乘以數據原子長度。
5.如權利要求1所述的基于故障日志的場景復現方法,其特征在于,步驟s4包括:對故障日志的報警位置的序列進行解析,將序列的每一個成員解析為靜態模塊編碼和動態模塊編碼,由此序列獲得故障發生時異常報警信息的唯一絕對路徑,從而定位產生故障報警的函數模塊。
6.如權利要求1所述的基于故障日志的場景復現方法,其特征在于,步驟s5在軟件仿真環境中使用故障數據賦值模塊輸出狀態生成故障報警模塊執行前狀態,復現故障報警場景,包括:在軟件仿真環境中,加載故障軟件對應的靜態配置數據,將故障數據賦值模塊產生的故障時刻的軟件狀態,作為故障報警模...
【專利技術屬性】
技術研發人員:左輝,陳祥,夏庭鍇,劉俊,孫利,閔銳,陳進,桑勝亞,
申請(專利權)人:卡斯柯信號成都有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。