基於日誌的代碼缺陷自動定位小工具

來源:互聯網
上載者:User
基於日誌的代碼缺陷自動定位小工具

A log-based tool for software fault locating

 

王樹鈿

wangshudian#gmail.com,2011-4-2

 

關鍵字:狀態機器;日誌分析;代碼缺陷

 

1 引言

 

    吃喝總要拉撒,做軟體總要定位Bug。定位問題的方法很多,其中有一種是分析系統日誌。通常我們分析日誌靠的是人工走讀,追蹤變化流程來找問題根源。往往日誌資訊量是比較大的,分析起來費時費力。本文借鑒文獻[1]的思路,開發了一個基於狀態轉換表進行日誌分析自動定位代碼缺陷的小工具。

 

 

2 功能簡述

根據使用者定義的狀態轉換規則,對事件記錄進行分析,檢查程式運行過程是否存在異常狀態轉換,並輸出缺陷警示資訊。

 

 

3 工具使用說明3.1 第一步,對象及其狀態分析

(1)確定檢查對象

(2)確定對象狀態機器

(3)編輯對象狀態轉換設定檔

給例:

[STATESET]<br />S0=state0<br />S1=state1<br />S2=state2</p><p>[INITSTATE]<br />S0</p><p>[ENDSTATE]<br />S0</p><p>[EVENTSET]<br />E0=event0<br />E1=event1<br />E2=event2<br />E3=event3</p><p>[EXCEPTIONSET]<br />S-1="error: info1..."<br />S-2="error: info2..."<br />S-3="error: info3..."<br />S-4="error: info4..."<br />S-5="error: info5..."<br />S-6="error: info6..."<br />S-7="error: info7..."<br />S-8="error: info8: not expected endstate"</p><p>[TRANSITION]<br />FROM=S0,ON=E0,TO=S1<br />FROM=S0,ON=E1,TO=S-1<br />FROM=S0,ON=E2,TO=S-2<br />FROM=S0,ON=E3,TO=S-3<br />FROM=S1,ON=E0,TO=S-4<br />FROM=S1,ON=E1,TO=S2<br />FROM=S1,ON=E2,TO=S-5<br />FROM=S1,ON=E3,TO=S0<br />FROM=S2,ON=E0,TO=S-6<br />FROM=S2,ON=E1,TO=S-7<br />FROM=S2,ON=E2,TO=S1<br />FROM=S2,ON=E3,TO=S0<br />

 

3.2 第二步,記錄事件記錄

 

 

 

因為不同產品代碼日誌形態各異,本工具解析規定了格式:

 

FILE:檔案名稱,LINE:行號,SM:對象名,OBJID:對象ID,EVENT:事件

 

注意:本工具約束對象名必須和第一步的ini檔案名稱一致。

 

可參考以下方案記錄日誌:

 

方案1,Hook方式。適用於不動原代碼的情況。

方案2,宏方式。

 

給例:

 FILE:example.cpp,LINE:40,SM:statemachine_example,OBJID:0x477e22,EVENT:event0<br />FILE:example.cpp,LINE:40,SM:statemachine_example,OBJID:0x477e22,EVENT:event1<br />FILE:example.cpp,LINE:40,SM:statemachine_example,OBJID:0x477e22,EVENT:event1<br />

3.3 第三步,運行分析工具

     可直接點擊LogFAT.exe運行,預設參數是LogFile.txt和ReportFile.txt.

     也可在命令列執行,並指定記錄檔名和輸出報告名。

 

3.4 第四步,查看分析結果

  開啟ReportFile.txt查看。

  給例:

 ./gtest_LogFileAnalysisTool.cpp(40): Exception 7: (error: info7...)<br />./gtest_LogFileAnalysisTool.cpp(40): Exception 8: (error: info8: not expected endstate)<br />

 

 

參考文獻

【1】James H. Andrews, Theory and Practice of Log File Analysis, 1998

 

 

 註:

 

CSDN部落格好似不能上傳附件,我把該工具Demo版放到的我發布的下載資源裡面了。連結:

 

 http://download.csdn.net/source/3155673

 

歡迎大家反饋改進建議:)

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.