2008-12-16 53 views
0

我正在使用備用堆棧來處理C程序的信號在Linux上。 發生堆棧溢出時,我的信號被傳送到備用信號堆棧而不是主堆棧。如何去主棧

所以在這種情況下,我想轉儲主要堆棧....我怎麼能?

回答

1

記住主堆棧地址(該堆棧幀中某個局部變量的&),並從異常地址轉儲到該地址。請注意,有一些可移植性問題(例如,堆棧在hp-pa-risc上向上增長)。 如果故障不是由於訪問溢出堆棧下方的保護區域引起的,則必須查看信號之前有效的sp的異常信息。異常信息作爲參數傳遞給信號處理程序。同樣,這可能是非常cpu和os特定的(在所有unices中有所不同)。

關於