問題のあるソース行を見つけるには、dbx を使用してセグメント不正が発生したソースコード行を検出します。
demo% cat WhereSEGV.f INTEGER a(5) j = 2000000 DO 9 i = 1,5 a(j) = (i * 10) 9 CONTINUE PRINT *, a END demo%
dbx を使用してセグメント不正が発生した行番号を検出します。
demo% f77 -g -silent WhereSEGV.f demo% ./a.out *** TERMINATING ./a.out *** Received signal 11 SIGSEGV Segmentation fault (core dumped) demo% dbx a.out a.out の読み込み中 rtld /usr/lib/ld.so.1 の読み込み中 libF77.so.3 の読み込み中 libsunmath.so.1 の読み込み中 libm.so.1 の読み込み中 libc.so.1 の読み込み中 libdl.so.1 の読み込み中 (dbx) run 実行中: a.out (プロセス id 2273) mb.so.1 の読み込み中 wcwidth.so.1 の読み込み中 シグナル SEGV (フォルトのアドレスにマッピングしていません) 関数 MAIN 行番号 4 ファイル "WhereSEGV.f" 4 a(j) = (i * 10) (dbx)