コアダンプの原因となるシグナルを受け取ったとき、siginfo_tおよびucontext_t構造体をグローバル変数にコピーするために自分のハンドラを実行してコアダンプでアクセスできるようにしたいと思います。現在のところ、ハンドラの最後では、デフォルトのハンドラを再割り当てし、raise(thesig)を呼び出します。これを行う際の問題は、コアダンプの "info registers"が、ハンドラ内のレジスタの状態を示し、元の信号の時ではないことを示します。私はucontext_tを保存して以来、元のレジスタ値を見ることができますが、その知識はチームの周りにコアダンプが渡されたときに失われたり忘れられたりする可能性があります。Linux:後続のコアダンプのためのレジスタを捨てることなくスヌープ信号を送る?
私の質問は、シグナルをリレイズして、コアダンプファイルが元のシグナルのレジスタ状態を保持していることを確認する方法ですか?私はおそらくハンドラの最後にあるすべてのregを手動で復元し、raise()を呼び出す代わりにシグナルを引き起こした命令に戻るためにインラインasmを使うことができると思っていましたが、命令を試行すると、最初の試行と同じシグナリング動作が発生します。
@ER、コアダンプは常に間違った場所を指します。 :( – sree