1

約100個の奇数値のforループがあります。イテレータ変数に値を設定して、そのプログラムの実行状態に直接進むことができるブレークポイントが必要です。

例えば

for(int i=0;i<500;i++)
{ 
  doSomething();
}

i=100;ここでは、ブレークポイントをオンにして、0から99までのすべての値を一度にステップスルーしたいと思います。これはで可能gdbですか、どうすればよいですか?

4

3 に答える 3

7

ではgdb、ブレークポイントに条件を設定できます。

break line if i == 100

ここで、「line」は適切な行番号です。

于 2012-11-04T16:14:57.273 に答える
1

条件付きブレークポイントは、特定の条件が真の場合にのみ制御を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) 
于 2012-11-04T16:18:17.343 に答える
1

おそらくもっと良い方法がありますが、私はこのようなことをすることで多くのマイレージを獲得しました:

if (i == 100) {
    int breakpoint = 10;
}
于 2012-11-04T16:07:39.530 に答える