2013-12-09 37 views

回答

3

backtrace()返回緩衝區指向的數組 中的調用程序的回溯。

因此是的,它並不在乎堆棧的分配位置。您只需從目標線程調用它,並且堆棧信息隱含在當前堆棧指針中。

如果你想回溯另一個線程(除了正在運行的那個)更棘手。首先,它可能正在運行,這將使所有試圖回溯到比賽。但另一方面,我認爲沒有任何標準的方法可以使其他線程可見的堆棧指針(這是跟蹤應該開始的地方)。如果沒有這些信息,就無法啓動跟蹤,因爲堆棧的基礎信息不夠。

ptrace可以得到當前的寄存器值,這是調試器使用的系統調用,雖然這會造成很大的干擾)