一. 设置读观察点
1. 设置读观察点命令
rwatch 命令:rwatch 命令设置读观察点,也就是当发生读取变量行为时,程序就会暂停住。
使用方法同 watch 命令相同。
注意, rwatch 命令只对硬件观察点才生效。
2. 下面用一段代码,说明一下 rwatch 命令的使用,代码如下:
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
int gdata = 0;
void *thread1(void *p_arg)
{
while (1)
{
gdata *= 2;
sleep(5);
}
}
int main(void)
{
pthread_t t1;
pthread_create(&t1, NULL, thread1, "Thread 1");
sleep(1000);
return 0;
}
下面开始进入 gdb 调试。设置读观察点 即变量 gdata 。
首先,输入 start 命令,开始运行程序。
其次,输入 n 命令,单步运行程序,直至成功创建线程 thread1。
最后,输入 rwatch gdata 命令,设置读观察点 gdata。
可以看出,使用命令 rwatch gdata 之后,子线程 thread1 每次读一次变量 gdata 的值,程序都会停下来。