2013年8月8日 星期四

在 C 語言中,發生錯誤時,顯示 backtrace

    在很多語言中, 如 python, java 等,當程式遇到錯誤時,他會顯示 backtrace( 就走到目前函數位置的呼叫流程)。在 C 語言中,預設只會出現錯誤訊息,就沒了。

    不過在 linux 下,你可以使用 catchsegv 來顯示程式錯誤時的 backtrace。用法大概向這樣
catchsegv ./a.out
    不過 catchsegv 指令只會顯示在有關 segmentation fault 的錯誤的 backtrace。如果你想要顯示各種程式異常時的 backtrace。則要先設定下面的環境變數。
export SEGFAULT_SIGNALS=all
    事實上, gdb 也可以顯示 backtrace。只是每次發生錯誤,就自動印出 backtrace,會比較方便就是了。


參考資料:BINARY HACKS 駭客祕傳技巧一百招
這本書是工具書,不過裡面教了很多技巧,與原理。值得一讀的好書。

沒有留言:

張貼留言