Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用备用堆栈来处理 C over linux 中程序的信号。当堆栈溢出发生时,我的信号被传递到我的备用信号堆栈而不是主堆栈上。
所以在这种情况下我想转储主堆栈....我该怎么办?
记住 main 中的顶部堆栈地址(以及该堆栈帧中的某些局部变量),然后从异常地址转储到该地址。请注意,存在一些可移植性问题(例如,堆栈在 hp-pa-risc 上向上增长)。如果失败不是由于访问溢出堆栈下方的受保护区域,您必须查看在信号之前有效的 sp 的异常信息。异常信息作为参数传递给信号处理程序。同样,这可能是非常特定于 cpu 和 os 的(在所有 unice 之间有所不同)。
问候