下面举例说明:
代码如下:
#include int main(){int a = 0;for (int i = 0; i < 10; i++)a += i;}
调试的时候过程如下:
(gdb) l
1 #include
2
3 int main()
4 {
5 int a = 0;
6 for (int i = 0; i < 10; i++)
7 a += i;
8 }
(gdb)b 5 ------ - 在第5行设置断电
Breakpoint 1 at 0x80483ba: file a.cpp, line 5.
(gdb)r------ - 执行到断点处停止
Starting program : / a.o
Breakpoint 1, main() at a.cpp : 5
5 int a = 0;
(gdb)watch a------ - 观察a的值,当有变化时,停止
Hardware watchpoint 2: a
(gdb) c------ - 继续执行,当a的值变化时停止
Continuing.
Hardware watchpoint 2 : a
Old value = 0
New value = 1
main() at a.cpp : 6
6 for (int i = 0; i < 10; i++)
(gdb)
Continuing.
Hardware watchpoint 2 : a
Old value = 1
New value = 3
main() at a.cpp : 6
6 for (int i = 0; i < 10; i++)
(gdb)
Continuing.
Hardware watchpoint 2 : a
即,在使用watch时步骤如下:
使用break在要观察的变量所在处设置断点;
使用run执行,直到断点;
使用watch设置观察点;
使用continue观察设置的观察点是否有变化。
8.set variable value = x 动态改变变量值
1,调试中需要修改临时变量的值时,可以使用set命令
语法:
set variable key = value
set var key = value
示例:
(gdb) set variable array[1] = 12
2,另一种更简单的方式,使用print命令修改
语法:
print key = value