一. 设置读写观察点命令
awatch 命令: 设置读写观察点,也就是当发生读取变量或改变变量值的行为时,程序就会暂停住。
注意,awatch 命令只支持设置硬件观察点。
二. 使用实例
下面用一段代码来说明一下,在 gdb 调试中,设置读写观察点的方法,代码如下:
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
int gdata = 0;
void *thread1(void *p_arg)
{
while (1)
{
gdata++;
sleep(5);
}
}
void *thread2(void *p_arg)
{
while (1)
{
printf("***gdata: %d\n", gdata);
sleep(5);
}
}
int main(void)
{
pthread_t t1, t2;
pthread_create(&t1, NULL, thread1, "Thread-1");
pthread_create(&t2, NULL, thread2, "Thread-2");
sleep(1000);
return 0;
}
下面进行 gdb 调试,设置读写观察点,即无论是对变量 gdata 读或更改,程序都会停下来。
首先,输入 start 命令,运行程序。
其次,输入 n 命令进行单步调试,单步运行程序直至两个线程都创建完成之后。
其次,输入 awatch gdata 命令,设置读写观察点。
最后,输入 c (continue 缩写) 命令,继续运行程序。
可以看到,通过输入 atwatch gdata 命令设置了读写监控点,即无论是对变量 gdata 读或更改,程序都会停下来。