• 观察点
  • 观察点类型
    • Hardware watchpoint
    • Software watchpoint
  • watch 写观察点
    • 值被改变
    • 满足表达式条件
  • 给特定运行的线程加 watch
    • 查看运行的线程
    • 为运行的线程设置 watchpoint
  • rwatch 读观察点
  • awatch 读写观察点
  • info watch 查看观察点
  • delete 删除观察点
  • disable 禁用观察点
  • enable 启用观察点

观察点

观察点是一个特殊的断点,当表达式的值发生改变时,进行终端。
表达式可以使一个变量的值,也可以包含由运算符组合的一个或多个变量的值。

观察点类型

Hardware watchpoint

通过硬件方式。
不影响程序的执行。
不影响程序执行的性能。
大多数X86系统都使用 Hardware watchpoint

Software watchpoint

通过软件方式。
影响程序性能。(慢到几倍甚至十几倍)
例如:a + b

watch 写观察点

值被改变

当变量的值发生改变并被写时,触发断点。

命令:(gdb) watch [变量名]

例如:

(gdb) watch tmp
Hardware watchpoint 1: tmp

满足表达式条件

触发中断条件:
①:表达式中的值被改变。
②:表达式满足条件。

命令:(gdb) watch [条件]

例如:

(gdb) watch tmp1+tmp2 > 10
Hardware watchpoint 1: tmp1+tmp2 > 10

给特定运行的线程加 watch

查看运行的线程

命令:

(gdb) i threads

* 为主线程。

为运行的线程设置 watchpoint

命令:watch [变量名] thread [线程号]

举例:

(gdb) watch tmp thread 3

3号线程的tmp变量设置观察点。

说明:设置只有只有3号线程改变tmp值时,触发断点。

rwatch 读观察点

当变量的值被读取时,触发断点。

命令:(gdb) rwatch [变量名]

例如:

(gdb) rwatch tmp
Hardware read watchpoint 1: tmp

awatch 读写观察点

当变量的值发生改变或者被读取时,触发断点。

命令:(gdb) awatch [变量名]

例如:

(gdb) awatch tmp
Hardware access (read/write) watchpoint 1: tmp

info watch 查看观察点

命令:info watch

举例:

(gdb) info watch
Num     Type           Disp Enb Address            What
1       acc watchpoint keep y                      tmpbreakpoint already hit 1 time

delete 删除观察点

命令:

(gdb) delete
Delete all breakpoints? (y or n) y
(gdb) info watch
No watchpoints.

disable 禁用观察点

命令:

(gdb) awatch tmp
Hardware access (read/write) watchpoint 2: tmp
(gdb) info watch
Num     Type           Disp Enb Address            What
2       acc watchpoint keep y                      tmp
(gdb) disable 2
(gdb) info watch
Num     Type           Disp Enb Address            What
2       acc watchpoint keep n                      tmp
(gdb)

说明:观察点存在,但是满足条件后不会触发断点。

enable 启用观察点

命令:

(gdb) awatch tmp
Hardware access (read/write) watchpoint 2: tmp
(gdb) info watch
Num     Type           Disp Enb Address            What
2       acc watchpoint keep y                      tmp
(gdb) disable 2
(gdb) info watch
Num     Type           Disp Enb Address            What
2       acc watchpoint keep n                      tmp
(gdb) enable 2
(gdb) info watch
Num     Type           Disp Enb Address            What
2       acc watchpoint keep y                      tmp
(gdb)

禁用之后启用观察点,满足条件之后触发观察点。

GDB调试:观察点(数据断点)【GDB调试】相关推荐

  1. 微信小程序 真机调试出现打开调试有数据,关闭调试没有数据

    最近小程序开发中踩到了一个坑,就是有个接口开发者工具中拿数据是没有问题的,但是真机调试的时候,手机上始终加载不出数据.网上查了才知道,是因为该接口的域名没有在微信公众平台中配置 登录微信公众平台,在开 ...

  2. GDB再学习(6):断点调试之软件断点

    系列文章目录 GDB再学习(1):前言 GDB再学习(2):编译 GDB再学习(3):GDB的启动和运行 GDB再学习(4):程序准备 GDB再学习(5):常用指令介绍 GDB再学习(5.1):常用指 ...

  3. 【软件开发底层知识修炼】十六 快速学习GDB调试三 使用GDB的数据断点监测变量是否改变

    上一篇文章我们学习了如何使用GDB进行软件断点调试和硬件断点调试:[软件开发底层知识修炼]十五 快速学习GDB调试二 使用GDB进行断点调试 本篇文章继续上一篇文章的学习,如何使用GDB的数据断点监测 ...

  4. linux gdb检查函数栈,Linux - gdb调试

    调试 调试工具:gdb的使用 编译后版本 编译后的成果分为两个版本: debug版本:调试版本 -->程序员使用 release版本:最终发行版本 -->最终用户使用 gcc默认生成的是r ...

  5. linux_进程类相关学习-fork函数-getpid函数-getppid函数-getuid函数-geteuid函数-getgid函数-getegid函数-进程之间共享数据-进程gdb调试

    接上一篇:linux_环境变量-C语言代码打印环境变量-getenv函数-setenv函数-unsetenv函数 本次来分享进程类相关的学习,主要就是分享一些函数的使用,来,开始上菜: 目录 1.fo ...

  6. Linux上程序调试的基石(2)--GDB

    3. GDB的实现  GDB是GNU发布的一个强大的程序调试工具,用以调试C/C++程序.可以使程序员在程序运行的时候观察程序在内存/寄存器中的使用情况.它的实现也是基于ptrace系统调用来完成的. ...

  7. 合并不同gdb下的相同要素_GDB调试学习

    简介 GDB是GCC的调试工具.其功能如下: 启动程序,使程序按自定义形式运行: 使程序停止指定断点位置: 程序停止后,检查程序执行中的相应情况: 动态改变程序执行环境. gdb调试 能进行GDB调试 ...

  8. gdb使用watch命令设置数据断点

    文章目录 前言 数据变化断点 编写测试程序代码 加数据断点并调试 总结 前言 "数据断点"这个说法是沿用在Visual Studio中学到的设置断点的方法,在gdb中一般被叫做&q ...

  9. linux单步调试方法,linux下gdb单步调试(中).doc

    linux下gdb单步调试(中) linux下gdb单步调试(中) linux下gdb单步调试(中) 一.设置断点( BreakPoint ) 我们用 break 命令来设置断点.正面有几点设置断点的 ...

最新文章

  1. 日记-致我那易逝的时光
  2. 《HTML5 2D游戏编程核心技术》——第1章,第1.3节特别功能
  3. Dotnet全平台下APM-Trace探索
  4. 31 天重构学习笔记9. 提取接口
  5. sigar-amd64-linux.so,sigar,no libsigar-amd64-linux.so in java.library.path
  6. html不使用cache数据
  7. c# Socket Udp通讯示例源码
  8. Duilib--->Duilib库介绍总结概述
  9. Can‘t open /dev/sda3 exclusively. Mounted filesystem?
  10. 【论文阅读】Reviving Iterative Training with Mask Guidance for Interactive Segmentation
  11. 交换机远程连接(eNsp)
  12. 在字符串中 快速查找
  13. 北航计算机考博经验,北航考博经验总结和感受
  14. 国家二级计算机office知识点,2017年全国计算机二级office常见知识点
  15. linux世界里类似source insight的工具(zz)-如梦初醒-中国教育人博客
  16. MySQL数据库授权备份恢复
  17. [程序员] 女程序员的青春有几年
  18. iOS 11 NFC技术
  19. Navisworks2014-2020 安装说明
  20. python异步协程爬取百度小说之西游记

热门文章

  1. 2022-02-09
  2. Python常用库及模块
  3. 基于异或,取反和循环移位实现一个简单的加密解密函数
  4. 通过蜜罐技术获取攻击者手机号、微信号【网络安全】
  5. ListView 设置高度为刚好能包裹子元素
  6. MySQL WHERE:条件查询
  7. 1.11 多异常捕获
  8. Python操作Json、Csv、Excel文件
  9. 1128 N Queens Puzzle (20 分)【难度: 一般 / 知识点: 模拟】
  10. 【PAT乙级】1081 检查密码 (15 分)