有时程序会因核心转储而停止,此时便需要知道将程序引至该处的调用的序列。此序列称为栈跟踪。
where 命令显示程序流中执行停止位置以及执行到达此点的过程,即被调用例程的栈跟踪。
ShowTrace.f 是专门用于使核心转储深入调用序列中的若干层来显示栈跟踪的程序。
Note the reverse order: demo% f77 -silent -g ShowTrace.f demo% a.out MAIN called calc, calc called calcb. *** TERMINATING a.out *** Received signal 11 (SIGSEGV) Segmentation Fault (core dumped) quil 174% dbx a.out Execution stopped, line 23 Reading symbolic information for a.out ... (dbx) run calcB called from calc, line 9 Running: a.out (process id 1089) calc called from MAIN, line 3 signal SEGV (no mapping at the fault address) in calcb at line 23 in file "ShowTrace.f" 23 v(j) = (i * 10) (dbx) where -V =>[1] calcb(v = ARRAY , m = 2), line 23 in "ShowTrace.f" [2] calc(a = ARRAY , m = 2, d = 0), line 9 in "ShowTrace.f" [3] MAIN(), line 3 in "ShowTrace.f" (dbx) Show the sequence of calls, starting at where the execution stopped: