プログラムがコアダンプで終了したため、終了するまでの呼び出しシーケンスが必要な場合があるとします。このシーケンスをスタックトレースといいます。
where コマンドは、プログラムフローの実行が停止した位置、およびどのようにその位置に達したかを表示します。これを呼び出し先ルーチンのスタックトレースといいます。
ShowTrace.f は、呼び出しシーケンスでコアダンプを数レベル深くする、つまりスタックトレースを示すために考えられたプログラムです。
demo% f77 -silent -g ShowTrace.f (注 1) demo% a.out *** TERMINATING a.out *** Received signal 11 (SIGSEGV) (注 2) Segmentation Fault (core dumped) demo% dbx a.out a.out のシンボル情報を読み込んでいます。 ... (dbx) run 実行中: a.out (process id 1089) シグナル SEGV (フォルトのアドレスにマッピングしていません) 関数 calcb 行番号 23 ファイル "ShowTrace.f" (注 3) 23 v(j) = (i * 10) (dbx) where -V =>[1] calcb(v = ARRAY , m = 2) 行番号 23 ファイル "ShowTrace.f" [2] calc(a = ARRAY , m = 2, d = 0) 行番号 9 ファイル "ShowTrace.f" (注 4) [3] MAIN() 行番号 3 ファイル "ShowTrace.f" (dbx)
注 1: 順序が逆になっていることに注意してください。
注 2: MAIN が calc を呼び出し、calc が calcb を呼び出しています。
注 3: 23 行目で実行が停止しました。
注 4: calc が MAIN の 3 行目で呼び出さ れました。