我有幾個問題:Backtrace如何在Linux x86_64上運行?
- int backtrace(void ** buffer,int size); 這裏緩衝區是指針數組。並且返回數組元素返回指向堆棧的每一幀。那麼,backtrace()在內部調用malloc()的次數與幀數一樣嗎?爲什麼這是爲了?
- 上面分配的內存沒有從backtrace()中釋放(),那麼誰釋放這個內存呢?
- 是否有任何方法,以避免從backtrace()內的malloc()?
- 哪裏可以找到backtrace()源代碼?
- 我該如何編寫代碼來回溯到程序集?
-1:我2008-06-14手冊頁(或更早版本太)回答您的問題1和2明確。第2段的說明:「並且必須由呼叫者釋放」。 – thiton 2012-01-04 09:52:45
可否請讓我知道如何以及在哪裏找到「我的2008-06-14聯機幫助」? – sandeep 2012-01-04 10:32:17
在任何Linux系統上的shell(在終端中)運行'man backtrace'。手冊頁是所有系統和核心C庫函數的權威信息源。 – thiton 2012-01-04 12:14:44