0

我正在使用备用堆栈来处理 C over linux 中程序的信号。当堆栈溢出发生时,我的信号被传递到我的备用信号堆栈而不是主堆栈上。

所以在这种情况下我想转储堆栈....我该怎么办?

4

1 回答 1

1

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

问候

于 2008-12-22T21:42:44.793 回答