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

印刷ビューの終了

更新: 2015 年 1 月
 
 

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

プログラムがクラッシュしている場所を特定するには、クラッシュ時のプログラムのメモリーイメージであるコアファイルの調査が必要になることがあります。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)

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


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