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