frame

現在の関数スコープを表示または変更します。

構文

frame [expr]

パラメーター

expr

開始点として使用されるフレーム。

説明

このコマンドは、現在の関数スコープを表示または変更します。

実行中のアプリケーションは、呼び出された関数の情報を含むコールスタックを保持します。スタック中の各項目はコールフレームです。各フレームには呼び出し元に返す必要のある情報と、関数のローカル変数に渡す必要のある情報の両方が含まれます。

プログラムの開始時には、コールスタックにはメイン関数用の 1 つのフレームしかありません。各関数の呼び出しにより、新しいフレームがスタックにプッシュされ、各関数の復帰によりスタックからその関数のフレームが削除されます。再帰関数では多くのフレームが生成されます。

expr パラメーターはフレーム番号またはアドレスです。フレーム 0 は現在実行中のフレームです。フレーム 1 はフレーム 0 を呼び出します。フレームの最上位の番号は main です。

不具合によりスタックフレームの連鎖が損なわれ、デバッガーが適切にフレーム数を割り当てることができない場合などにアドレスを指定すると便利です。また、アプリケーションが複数のスタック間でスタックを切り替える際にも役立ちます。

次の例は、現在の関数スコープを表示します。具体的には、デバッグ対象が main 関数の行 18 (変数 local_thing の値を設定) を実行していることを示しています。

(idb) 
					  frame
#0  0x08048427 in main () at /site/c_code/hello.c:18
18        float local_thing = 1.5;
(idb) 
					 

関連情報


このヘルプトピックについてのフィードバックを送信