バックトレースは、どのようにしてプログラムがここに至ったのかという 概略です。これは、カレントで実行している (フレームゼロの) フレームから 開始して、次にこのコール元 (フレーム1)、そして更に続くスタックといった ように、多くのフレームを1行に1フレームずつ表示します。
backtrace
bt
backtrace n
bt n
backtrace -n
bt -n
`where' と `info stack' が、`backtrace' に 別名定義 (alias) されています。
バックトレースが表示する各々の行には、フレーム番号、関数名、そして プログラムカウンタ値が表示されます。
もし、ソースファイルと共に関数のシンボルテーブル・データがフルに 読み込まれたような状況にあれば、バックトレースはソースファイル名と 行番号、そして関数の引数を表示します。(プログラムカウンタ値は、行番号を 持つコードの先頭の場合、省略されます。)
もし、ソースファイルのシンボルデータがフルに読み込まれた状態でない 場合は、スキャンのみ実行され、この拡張情報は省略符号 (...) に置き換え られます。あなたはまた、フレームを選択することで、フレームに関する ソースファイル上のシンボルデータを強制的に読み込ませることができます (See section フレームの選択)。
ここにバックトレースの例を示します。これは、`bt 3' というコマンドに よって生成されたもので、最深部から3つのフレームを表示しています。
#0 rtx_equal_p (x=(rtx) 0x8e58c, y=(rtx) 0x1086c4) (/gp/rms/cc/rtlanal.c line 337) #1 0x246b0 in expand_call (...) (...) #2 0x21cfc in expand_expr (...) (...) (More stack frames follow...)
expand_call
と expand_expr
という関数は、シンボルの詳細に
関するファイルがまだ読み込まれていないものです。全ての詳細は、
rtx_equal_p
という関数上に表れており、それは `rtlanal.c' と
いうファイルの中に含まれています。この関数の引数である x
と
y
は、その値が表示されています。