return (gdb モードのみ)

コールスタックからフレームを削除します。

構文

return

パラメーター

なし。

説明

return を使用すると、選択したスタックフレームとその中のすべてのフレームが破棄されます。実行している関数とすべての子関数はもはや呼び出されず、実行を停止します。

return コマンドは、実行を再開しません。関数が戻った状態でプログラムを停止したままにします。対照的に、finish コマンドは選択したスタックフレームが自然に戻るまで実行を再開します。

hello_simple.: のコードの行 5-18 を例に考えます。

5       static volatile int bar  = 0;
6
7       static void readGlob( int x )
8       {
9           bar = 100;
10          foo = x;
11          bar = 200;
12      }
13
14      int main()
15      {
16      int j = 10;
17      readGlob(5);
18      j = bar;

アプリケーションは行 17 の readGlob() の呼び出しを実行して、関数 readGlob() 内部の行 10 の先頭に位置しています。 return コマンドは、デバッガーが行 11 の bar = 200 を実行する前に、readGlob() を終了してスタックからフレームを削除します。

アプリケーションは readGlob() から正常に戻ったかのように行 18 で停止します。

デバッガーは行 9 を実行した後、行 11 を実行する前に return コマンドを実行したため、行 18 の bar の値は (200 ではなく) 100 です。

Breakpoint 1, readGlob (x=1111) at /hello_simple.c:10
10          foo = x;
(idb) 
					 p bar
$1 = 100
(idb) 
					 return
Make readGlob return now? (y or n) y
#0  0x08048402 in main () at /hello_simple.c:18
18      j = bar;
(idb) 
					 p bar
$2 = 100

関連情報


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