要想设置一个条件断点,可以利用break if命令,如下所示:
(gdb) break line-or-function if expr
例子如下:
xiwx@xiwx-PC:~$ cat a.c
#include <stdio.h>
int count = 0;
int f(int a, int b)
{
printf("count %d\n", a);
return a;
}
int main()
{
int i;
for (i = 0; i < 1000; i++) {
f(i, i%3);
}
return 0;
}
xiwx@xiwx-PC:~$
gdb a
(gdb) b f if a==101 //设置条件断点
Breakpoint 1 at 0x6be: file a.c, line 7.
(gdb) commands //设置断点后 自动执行的命令
Type commands for breakpoint(s) 1, one per line.
End with a line saying just "end".
>p b
>end
(gdb)
(gdb) b f if a==103
Note: breakpoint 1 also set at pc 0x6be.
Breakpoint 2 at 0x6be: file a.c, line 7.
(gdb) commands
Type commands for breakpoint(s) 2, one per line.
End with a line saying just "end".
>p b
>end
(gdb) r