3

ファイル main.c:

#include <stdio.h>

int main()
{
    int i;
    for (i=0; i<30 ;i++) {
            printf ("%d\n", i);
    }
    return 0;
}

gdb では通常、ブレークポイントを設定し、そのブレークポイントで実行するコマンドとしてウォッチポイントを指定します。

(gdb) break main
Breakpoint 1 at 0x4004b0: file main.c, line 6.
(gdb) command
Type commands for when breakpoint 2 is hit, one per line.
End with a line saying just "end".
>watch i
>end

監視対象の変数が変更されるたびに実行が停止します。問題は、(私の知る限り) gdb に監視対象変数の値を出力して続行するように指示する方法がないことです。これは、ネストされたウォッチポイントであるためです。それがスタンドアロンのウォッチポイントである場合、これはコマンド 'continue' を使用して簡単に実行できます (main() のスコープ内にいる場合):

(gdb) watch i
Hardware watchpoint 2: i
(gdb) command
Type commands for when breakpoint 2 is hit, one per line.
End with a line saying just "end".
>continue
>end

では、gdb がネストされたウォッチポイントで停止せず、値の変更のみを出力する方法はありますか? または、ネストされたウォッチ/ブレークポイントで実行するコマンドを指定するには、はい、より良いですか?

さらに、gdb で「苦情 0 を設定」「確認をオフに設定」を試みましたが、役に立ちませんでした

4

1 に答える 1