jump (gdb モードのみ)

指定した行番号またはアドレスにジャンプします。

構文

jump { num | *addr }

パラメーター

num

ジャンプ先の行番号。

addr

ジャンプ先の命令アドレス。

説明

このコマンドは、プログラムカウンターを指定の場所にジャンプします。デバッガーはその位置でブレークポイントに遭遇しない限り、その位置からプログラムの実行を再開します。

ジャンプは、スタックフレームやメモリー内容は変更しません。1 つのルーチンから別のルーチンにジャンプすると予測できない結果を引き起こすことがあります。

tbreak コマンドは、このコマンドとよく併用されます。

このコマンドを使用する 1 つの例として、すでに実行されたデバッグ対象のセクションに移動し、より詳しく調査することができます。

num が現在実行中の関数ではない関数にあり、その 2 つの関数でそれぞれ異なる引数パターンや、ローカル変数に対して異なるパターンが必要な場合、このコマンドの出力は予測できない結果を引き起こすことがあります。

このため、num が現在の関数にない場合、デバッガーはこのコマンドを確認するプロンプトを表示します。

このコマンドは、アプリケーションが実行を続けるアドレスを変更するという点で、$pc レジスターに新しい値を格納するのに似ています。例えば、コマンドセット $pc = 0x123 は、次の continue コマンドをアドレス 0x123 から続けます。

デバッガーが行 23 のブレークポイントをヒットしたとき、行 23 のコードは実行されていないため、a[11] の内容は変更されません。行 27 へのジャンプは、行 23、24、25 および 26 が実行されないことを意味するため、a[11] の内容は変更されないままです。

Breakpoint 1, main () at string_call.c:23
23        char a[11] = "ten chars!\000"; /* Add stopper for char* reference */
(idb) 
					  l
18        printf("string is \"%s\"\n", str);
19      }
20
21      int main()
22      {             /*1234567890*/
23        char a[11] = "ten chars!\000"; /* Add stopper for char* reference */
24        char *p    = "10 string.";
25        char *n    = "null\x0null";
26
27        print_array(a);          /* array is "ten chars!"  */
(idb) 
					  b 28
Breakpoint 2 at 0x8048457: file string_call.c, line 28.
(idb) 
					  jump 27                                                                                                                                                                             
Continuing at 0x804844a.
array is "˜ZZ·?z_·˜Z"       /* init of 'a' on line 23 was skipped, so it holds garbage. */
 
Breakpoint 2, main () at string_call.c:28
28        print_char_ptr(&a[0]);   /* string is "ten chars!" */
(idb) 
					  

関連情報


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