Sun Studio 12: dbx コマンドによるデバッグ

コアファイルをチェックする

プログラムがどこで クラッシュするかをつきとめるには、プログラムがクラッシュしたときのメモリーイメージであるコアファイルを調べるとよいでしょう。where コマンドを使用すれば (where コマンド」を参照)、コアをダンプしたときのプログラムの実行場所がわかります。


注 –

ネイティブコードのときと異なり、コアファイルから Java アプリケーションの状態情報を入手することはできません。


コアファイルを デバッグするには、次を入力します。


$ dbx program_name core

または


$ dbx - core

次の例では、プログラムがセグメント例外でクラッシュし、コアダンプが作成されています。ユーザーは dbx を起動し、コアファイルを読み込みます。次に、where コマンドを使用してスタックトレースを表示させます。 これによって、ファイル foo.c の 9 行目でクラッシュが発生したことがわかります。


% dbx a.out core
a.out の読み込み中
core ファイルハンドラの読み込みに成功しました
ld.so.1 の読み込み中
libw.so.1 の読み込み中
libdl.so.1 の読み込み中
libc_psr.so.1 の読み込み中
プログラムはシグナル SEGV (フォルトのアドレスにマッピングしていません)
現関数: main
    9       printf("string '%s' is %d characters long\n", msg, strlen(msg));
(dbx) where
  [1] strlen(0x0, 0x0, 0xff337d24, 0x7efefeff, 0x81010100, 0xff0000)、アドレス
0xff2b6dec
=>[2] main(argc = 1, argv = 0xffbef39c)、"foo.c" の 9 行目
(dbx)

コアファイルのデバッグの詳細については、「既存のコアファイルのデバッグ」を参照してください。呼び出しスタックの詳しい使い方については、「呼び出しスタックを確認する」を参照してください。


注 –

プログラムが共有ライブラリと動的にリンクされている場合、できれば、コアファイルが作成されたオペレーティング環境でコアファイルをデバッグしてください。別のオペレーティング環境で作成されたコアファイルをデバッグする方法については、「一致しないコアファイルのデバッグ」を参照してください。