約100個の奇数値のforループがあります。イテレータ変数に値を設定して、そのプログラムの実行状態に直接進むことができるブレークポイントが必要です。
例えば
for(int i=0;i<500;i++)
{
doSomething();
}
i=100;
ここでは、ブレークポイントをオンにして、0から99までのすべての値を一度にステップスルーしたいと思います。これはで可能gdb
ですか、どうすればよいですか?
ではgdb
、ブレークポイントに条件を設定できます。
break line if i == 100
ここで、「line」は適切な行番号です。
条件付きブレークポイントは、特定の条件が真の場合にのみ制御をgdbに転送するブレークポイントです。
これは、ループを10回繰り返した後でのみgdb制御が必要な場合に役立ちます。
ブレークポイントにを設定するには、ブレークポイントの番号の後にブレークポイントをトリガーする条件を指定してコマンドをcondition
使用します。condition
これは、「条件(i> = 10)が真」の場合にのみトリガーされる条件付きブレークポイントを設定する例です。
(gdb) break 28 # set breakpoint at line 28
(gdb) info break # list breakpoint information
Num Type Disp Enb Address What
1 breakpoint keep y 0x080588a3 in loopit at loops.c:28
(gdb) condition 1 (i >= 10) # set condition on breakpoint 1
(gdb) run (or write `continue` if already running)
おそらくもっと良い方法がありますが、私はこのようなことをすることで多くのマイレージを獲得しました:
if (i == 100) {
int breakpoint = 10;
}