Next: , Previous: Frames, Up: Stack


6.2 バックトレース

バックトレースとは、 ユーザ・プログラムが現在いる箇所にどのようにして到達したかを示す要約情報です。 複数のフレームが存在する場合、 1フレームの情報を1行に表示します。 現在実行中のフレーム (番号0のフレーム) を先頭に、 それを呼び出したフレーム (番号1のフレーム) を次行に、 以降、 同様にスタックをさかのぼって情報を表示します。

backtrace
bt
全スタックのバックトレースを表示します。 スタック内のすべてのフレームが、 1行に1フレームずつ表示されます。

システムの割り込み文字 (通常は、Ctrlキーを押しながらCを押す) によって、 いつでもバックトレースを停止することができます。

backtrace n
bt n
引数のないbacktraceコマンドと似ていますが、 最下位のフレームから数えてn個のフレームだけが表示されます。
backtrace -n
bt -n
引数のないbacktraceコマンドと似ていますが、 最上位のフレームから数えてn個のフレームだけが表示されます。

backtraceの別名としては、 ほかにwhereinfo stack (省略形はinfo s) があります。

backtraceコマンドの出力結果の各行に、 フレーム番号と関数名が表示されます。 set print address offコマンドを実行していなければ、 プログラム・カウンタの値も表示されます。 backtraceコマンドの出力結果では、 関数への引数に加えて、 ソース・ファイル名や行番号も表示されます。 プログラム・カウンタが、 行番号で指定される行の最初のコードを指している場合、 その値は省略されます。

以下にbacktraceの例を示します。 これは、 ‘bt 3’の出力であり、 したがって最下位のフレームから3フレームが表示されています。

     #0  m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
         at builtin.c:993
     #1  0x6e38 in expand_macro (sym=0x2b600) at macro.c:242
     #2  0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
         at macro.c:71
     (More stack frames follow...)

番号0のフレームを表示する行の先頭には、 プログラム・カウンタの値がありません。 これは、 builtin.c993行めの最初のコードにおいて ユーザ・プログラムが停止したことを表わしています。