2

私は AIX に取り組んでおり、プロセスがクラッシュし続けています。私はコア ファイルを調べたことがありません。可能であれば、何らかのガイダンスが必要です。私はdbxを使用しています。(a) コア ファイルが目的の場所に移動していることを確認し、(b) クラッシュする前のプロセスの状態を確認するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

4

実行をステップスルーしても大丈夫ですが、コアのデバッグについてもよくわかりません。これらのコマンドがおそらく焦点を当てるべきものであることがわかりました。おそらくもっとあります。

コアをdbxで実行したら、次のようにします。

  1. 'where'-スタックを表示します
  2. 「上」または「下」-フレームを移動してから、
  3. 'printvar'-変数を表示します
  4. および「list」または「edit」-現在の場所にあるファイル情報を表示します

「データの調査」の下でここを見ると私は助けになりました。

于 2012-02-07T17:53:27.727 に答える
3

コア ファイルは、プロセスの現在の作業ディレクトリに作成されます。で確認、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 ページを読んでください。必要なすべてのデバッグ コマンドが記載されています。

また、スタック トレースを最大限に活用するには、プログラムをデバッグ シンボルを有効にしてコンパイルする必要があることにも注意してください (後で「削除」しないでください)。デバッグ シンボルがないと、スタック トレースに関数名が表示されますが、それ以外はほとんど表示されません。

于 2011-02-12T17:54:36.790 に答える