根據日誌內容分析函式呼叫關係

2022-03-20 15:38:49 字數 1318 閱讀 4625

最近接受乙個專案,因環境受限,無法進行對其**除錯。發生問題時,只能通過log內容分析原因。由於無法除錯,函式間的呼叫關係只能通過檢視源**得知,比較痛苦。由於源**中每個函式都增加了log,遂萌發通過log自動分析函式間的呼叫關係,現已實現,和感興趣的朋友分享下,但願對其有幫助。

記錄log的內容是: 

1class

cplog219

~cplog()

2026

private:27

char

*m_pfilename;

28char

*m_pfunctionname;

29long

m_nid;

30};

3132

#define

cp_log_function(filename, funcname, lines)  \

33cplog mylogfunctionname(filename, funcname, lines)

然後在每個函式入口的地方加上這句(最好使用指令碼自動完成新增):

cp_log_function(__file__, __function__, __line__);

最後,把log檔案通過這個python指令碼檔案(在這裡不講解了,自己看源**吧)分析,即可

funcstack.rar

效果是這樣的:(看法,從左到右,從上到下,如果存在函式呼叫沒有結束也會有資訊輸出)

main

---->

cshell::oninitcompleted

---->

cshell::stopinitializationworker

---->

cshellasynctask::

~cshellasynctask

---->

cshell::writeunitidtohdd

---->

cshell::gethddpath

---->

---->

get_os_version

---->

getfileversion

---->

cshell::shellinisettings

*****************************************

there are 2 function not end and function stack is:

cshell::oninitcompleted, line:159

main, line:23

*****************************************

HTTP 請求內容 響應內容分析

accept 客戶端可以接受的 型別 內容型別中的先後次序表示客戶端接收的先後次序 accept encoding 客戶端瀏覽器可以支援的 web 伺服器返回的內容壓縮型別,表示允許伺服器將輸出內容傳送到客戶端之前進行壓縮,以節約頻寬 accept language 客戶端用來展示返回資訊所優先選擇...

C 託管堆物件例項包含內容分析

通danafa常來說,每個託管堆上的物件例項除了包含本身的值外,還包括 type object ponter 指向type物件例項。如果是同型別的物件例項,就指向同乙個type物件例項。sync block index 在多執行緒情況下用來控制同步 如下例項所示 namespace consolea...

ofd電子文件內容分析工具(分析文件 簽章和證書)

摘自 前言ofd是國家文件標準,其對標的文件格式是pdf。ofd文件是容器格式檔案,ofd其實就是壓縮包。將ofd檔案字尾改為.zip,解壓後可看到檔案包含的內容。ofd檔案解壓後,可以看到如下內容 對於xml檔案,可以用文字工具檢視。但是對於印章檔案 seal.esl 簽名檔案 signedval...