在程序中打印調用堆棧

  一直以來都沒有花太多精力放在學習調試方面,主要還是平時調試的機會相對較少,一般情況下,用strace、gdb、以及通過打印log基本上就能解決問題了,還有就是,與其花精力去提高調試技能,還不如在設計、防禦式編程和單元測試等能力去提高,以及提高自已編碼的質量,減少BUG的出現或者縮少BUG的範圍。

 

  但是,有時使用調試工具並不是爲了查找BUG,在閱讀和分析源代碼時也非常有用,下面的代碼演示如何在自已的程序中打印調用堆棧,有時你想知道某一個函數在某一時刻被哪一個函數調用了,只要在這個函數中打印一下調用堆棧即可,在一些不方便使用調試工具的場合(例如程序在開發板上運行時)還是比較有用的。

 

  下面的示例代碼我從網絡上找來的,我去掉了註釋,並在上面加上了我自已的註釋,可以通過看註釋來了解是怎麼實現的,注意在用gcc編譯代碼時,要加上選項-rdynamic和-g

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章