2

*nix で C++ をコンパイルしていますが、a) プログラムの任意の時点で、b) シグナル中、特に SIGSEGV 中にスタック ダンプを生成したいと考えています。

Google は、おそらく ptrace がその仕事のためのツールであると言っていますが、スタックをたどるわかりやすい例を見つけることができません。返信先住所を取得することはできますが、次の返信先住所はどうでしょうか。そして、その時点で関数のシンボリック名を抽出するのはどうですか? ドワーフと関係ある?

ここからどこに行くべきか教えていただければ、どうもありがとうございます。

4

1 に答える 1

2

glibc を使用している場合は、GNU 関数backtrace()backtrace_symbols()がこれを行う最良の方法です。とにかく、スタックのウォークは環境固有になるため、各プラットフォームで移植性のないネイティブ関数を使用してそれを行うことにマイナス面はありません。

于 2010-04-28T00:06:33.083 に答える