Linux下gdb调试-设置观察点说明二

gdb 调试程序中,设置观察点的方法可以监控程序中某个变量或者表达式的值,只要监控的变量或表达式的值发生改变,程序就会停止执行。

常用的监控变量(或表达式)的值的方式包括:watch 命令,rwatch 命令,awatch 命令。

查看所设置的观察点:

(gdb) info watchpoints

以下面代码为例,说明一下设置观察点的方法。代码如下:

#include <stdio.h>

 int main(void)
 {
    int i = 0;
    int data = 0;

    for(i = 0; i< 20; i++)
    {
        data += i;
        printf("***data: %d\n", data);
    }

    return 0;
 }

1.  watch 命令

watch 命令的语法格式: (其中,cond 指的就是要监控的变量或表达式。)

(gdb) watch cond

开始 gdb 调试,设置观察点,即监控变量 data 的值。

首先,输入 b main.c:6 命令,在代码第六行设置断点。

其次,输入 r 命令运行程序,程序会在第六行代码处停下。

然后,输入 watch data 命令,设置观察变量data的值。最后,输入 c 命令继续运行程序。

如下所示:

(gdb) b main.c:6
Breakpoint 1 at 0x1151: file main.c, line 6.
(gdb) r
Starting program: /home/wangtian/Code_Learns/C_Learns/debug/debug2/main.out

Breakpoint 1, main () at main.c:8
8        for(i = 0; i< 20; i++)
(gdb) watch data
Watchpoint 2: data
(gdb) info watch
Num     Type           Disp Enb Address    What
2       watchpoint     keep y              data
(gdb) c
Continuing.

***data: 0

Watchpoint 2: data

Old value = 0
New value = 1
main () at main.c:11
11            printf("***data: %d\n", data);

可以看到,data 的值从 0 变为 1 时,程序停下来了。如果继续运行程序,则输入 c 命令(continue的缩写)。

也可以使用命令 watch *(data type*)address 的方式,设置监控变量的值。如下所示:

首先,输入p &data 命令,查看data的地址。

然后,可输入 watch *(int *) 0x7fffffffde64 命令设置观察点,监控变量 data 的值。

综上所述,watch data 命令与 watch *(int *) 0x7fffffffde64 命令这两种方式设置观察点的方法,效果是一样的。

该博文接Linux下gdb调试-设置观察点说明一_许望天的博客-CSDN博客的说明。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值