プログラムがクラッシュしている場所を特定するには、クラッシュ時のプログラムのメモリーイメージであるコアファイルの調査が必要になることがあります。where コマンドを使用すると、コアダンプ時にプログラムが実行されていた場所を特定できます。where コマンドを参照してください。
$ 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)コアファイルのデバッグの詳細については、既存のコアファイルのデバッグを参照してください。呼び出しスタックの使用の詳細については、呼び出しスタックを確認するを参照してください。