Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ

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

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


注 –

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


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


$ dbx program_name core

または


$ dbx - core

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


% dbx a.out core
Reading a.out
core file header read successfully
Reading ld.so.1
Reading libc.so.1
Reading libdl.so.1
Reading libc_psr.so.1
program terminated by signal SEGV (no mapping at the fault address)
Current function is main
    9       printf("string ’%s’ is %d characters long\n", msg, strlen(msg));
(dbx) where
  [1] strlen(0x0, 0x0, 0xff337d24, 0x7efefeff, 0x81010100, 0xff0000), at
0xff2b6dec
=>[2] main(argc = 1, argv = 0xffbef39c), line 9 in "foo.c"
(dbx)

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


注 –

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