2016-10-26 15 views
2

GDBの "bt full"スタックトレースは、各フレームのローカルを示します。 "bt full"が実行されたときに、関数のエントリにローカルの値が表示されるのか、ローカルの更新された値が常に表示されますか?GDBのローカルの値 "bt full"出力

答えて

1

各フレームの現在のポイントで変数の値を表示します。

この方法は、変数のデバッグ情報に変数の場所の説明が含まれていることがあります。 gdbはこの記述を評価し、その位置から値を取得します。さて、これは複雑になる可能性があります(変数は1つの場所や別の場所のレジスタにあります;スタック上の構造体は構成要素に分割できますなど)。単純なケースでは、スタック。したがって、変数が割り当てられている場合は、古い値が上書きされます。

ただし、十分な新しいgccと十分なgdbを使用している場合は、関数引数のエントリ値が表示されることがあります。エントリ値は[email protected] = 72のようになります。これは、コンパイラがデバッガに入力時の値の計算方法を伝えることができたことを意味します。これは、通常、1つのフレームを巻き戻し、DWARF式を評価して、呼び出しフレーム内の状態をどのように計算するかを指定することによって行われます。

関連する問題