2008-12-16 60 views
0

我正在使用备用堆栈来处理C程序的信号在Linux上。 发生堆栈溢出时,我的信号被传送到备用信号堆栈而不是主堆栈。如何去主栈

所以在这种情况下,我想转储主要堆栈....我怎么能?

回答

1

记住主堆栈地址(该堆栈帧中某个局部变量的&),并从异常地址转储到该地址。请注意,有一些可移植性问题(例如,堆栈在hp-pa-risc上向上增长)。 如果故障不是由于访问溢出堆栈下方的保护区域引起的,则必须查看信号之前有效的sp的异常信息。异常信息作为参数传递给信号处理程序。同样,这可能是非常cpu和os特定的(在所有unices中有所不同)。

关于