關於stacktrace的基礎可以參見**stacktrace(頑強的灰太狼)。
我們在設計日誌模組時通常會記錄兩種資訊:
1)軟體執行的業務資料
2)軟體執行的技術引數(如當前呼叫的函式堆疊)。
一下通過一下方法可以獲取當前呼叫的函式:
獲取呼叫函式
1private
static
string
getcaller()218
else
1925
else
2629}30
}31}32
33return"";
34}其中:if("
loghelper
".equals(typename) &&(
"writemessage
".equals(methodname) ||"
writelog
".equals(methodname)))
是用於判斷是否為當前日誌模組的方法,如果是則忽略。
函式呼叫 函式棧
函式呼叫大家都不陌生,呼叫者向被呼叫者傳遞一些引數,然後執行被呼叫者的 最後被呼叫者向呼叫者返回結果,還有大家比較熟悉的一句話,就是函式呼叫是在棧上發生的,那麼在計算機內部到底是如何實現的呢?對於程式,編譯器會對其分配一段記憶體,在邏輯上可以分為 段,資料段,堆,棧 段 儲存程式文字,指令指標eip...
通過函式指標呼叫函式
指標可以不但可以指向乙個整形,浮點型,字元型,字串型的變數,也可以指向相應的陣列,而且還可以指向乙個函式。乙個函式在編譯的時候會被分配給乙個入口位址。這個函式入口位址稱為函式的指標。可以用乙個指標變數指向函式,然後通過該指標變數呼叫此函式。定義指向函式的指標變數的方法是 int p int int ...
通過函式指標呼叫函式
指標可以不但可以指向乙個整形,浮點型,字元型,字串型的變數,也可以指向相應的陣列,而且還可以指向乙個函式。乙個函式在編譯的時候會被分配給乙個入口位址。這個函式入口位址稱為函式的指標。可以用乙個指標變數指向函式,然後通過該指標變數呼叫此函式。定義指向函式的指標變數的方法是 int p int int ...