0

Linux上のCでプログラムのシグナルを処理するために代替スタックを使用しています。スタックオーバーフローが発生すると、信号はメインスタックではなく代替信号スタックに配信されます。

したがって、この状況では、メインスタックをダンプしたいのですが...どうすればよいですか?

4

1 に答える 1

1

mainの最上位スタックアドレス(およびそのスタックフレーム内のローカル変数の&)を覚えて、例外アドレスからそれにダンプします。移植性の問題がいくつかあることに注意してください(たとえば、hp-pa-riscではスタックが上向きになります)。オーバーフローしたスタックの下の保護領域へのアクセスが原因ではない場合は、信号の前に有効だったspの例外情報を確認する必要があります。例外情報は、引数としてシグナルハンドラに渡されます。繰り返しになりますが、これは非常にCPUおよびOSに固有である可能性があります(すべてのユニス間で異なります)。

よろしく

于 2008-12-22T21:42:44.793 に答える