私は AIX に取り組んでおり、プロセスがクラッシュし続けています。私はコア ファイルを調べたことがありません。可能であれば、何らかのガイダンスが必要です。私はdbxを使用しています。(a) コア ファイルが目的の場所に移動していることを確認し、(b) クラッシュする前のプロセスの状態を確認するにはどうすればよいですか?
ありがとう!
実行をステップスルーしても大丈夫ですが、コアのデバッグについてもよくわかりません。これらのコマンドがおそらく焦点を当てるべきものであることがわかりました。おそらくもっとあります。
コアをdbxで実行したら、次のようにします。
「データの調査」の下でここを見ると私は助けになりました。
コア ファイルは、プロセスの現在の作業ディレクトリに作成されます。で確認、getcwd()
で設定chdir(
)。
dbx [ -a ProcessID ] [ -B DebugFile ] [ -c CommandFile ] [ -I ディレクトリ ] [ -E DebugEnvironment ] [ -p oldpath=newpath:...| パスファイル] [ -u ] [ -F ] [ -r ] [ -x ] [ -v ] [ -C CoreFile | ObjectFile [ CoreFile ] ]
プログラムを dbx にロードするdbx /path/to/progname /path/to/corefile
と、スタック トレース (「where」コマンドなど) の確認を開始できます。
dbx を指定しない場合corefile
、ロードされたプログラムと同じディレクトリにある場合 (そしてそれらが署名と一致する場合)、「core」という名前の一致するファイルが自動的にロードされます。
dbx の man ページを読んでください。必要なすべてのデバッグ コマンドが記載されています。
また、スタック トレースを最大限に活用するには、プログラムをデバッグ シンボルを有効にしてコンパイルする必要があることにも注意してください (後で「削除」しないでください)。デバッグ シンボルがないと、スタック トレースに関数名が表示されますが、それ以外はほとんど表示されません。