最近接受乙個專案,因環境受限,無法進行對其**除錯。發生問題時,只能通過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...