GDB调试:观察点(数据断点)【GDB调试】
- 观察点
- 观察点类型
- 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调试】相关推荐
- 微信小程序 真机调试出现打开调试有数据,关闭调试没有数据
最近小程序开发中踩到了一个坑,就是有个接口开发者工具中拿数据是没有问题的,但是真机调试的时候,手机上始终加载不出数据.网上查了才知道,是因为该接口的域名没有在微信公众平台中配置 登录微信公众平台,在开 ...
- GDB再学习(6):断点调试之软件断点
系列文章目录 GDB再学习(1):前言 GDB再学习(2):编译 GDB再学习(3):GDB的启动和运行 GDB再学习(4):程序准备 GDB再学习(5):常用指令介绍 GDB再学习(5.1):常用指 ...
- 【软件开发底层知识修炼】十六 快速学习GDB调试三 使用GDB的数据断点监测变量是否改变
上一篇文章我们学习了如何使用GDB进行软件断点调试和硬件断点调试:[软件开发底层知识修炼]十五 快速学习GDB调试二 使用GDB进行断点调试 本篇文章继续上一篇文章的学习,如何使用GDB的数据断点监测 ...
- linux gdb检查函数栈,Linux - gdb调试
调试 调试工具:gdb的使用 编译后版本 编译后的成果分为两个版本: debug版本:调试版本 -->程序员使用 release版本:最终发行版本 -->最终用户使用 gcc默认生成的是r ...
- linux_进程类相关学习-fork函数-getpid函数-getppid函数-getuid函数-geteuid函数-getgid函数-getegid函数-进程之间共享数据-进程gdb调试
接上一篇:linux_环境变量-C语言代码打印环境变量-getenv函数-setenv函数-unsetenv函数 本次来分享进程类相关的学习,主要就是分享一些函数的使用,来,开始上菜: 目录 1.fo ...
- Linux上程序调试的基石(2)--GDB
3. GDB的实现 GDB是GNU发布的一个强大的程序调试工具,用以调试C/C++程序.可以使程序员在程序运行的时候观察程序在内存/寄存器中的使用情况.它的实现也是基于ptrace系统调用来完成的. ...
- 合并不同gdb下的相同要素_GDB调试学习
简介 GDB是GCC的调试工具.其功能如下: 启动程序,使程序按自定义形式运行: 使程序停止指定断点位置: 程序停止后,检查程序执行中的相应情况: 动态改变程序执行环境. gdb调试 能进行GDB调试 ...
- gdb使用watch命令设置数据断点
文章目录 前言 数据变化断点 编写测试程序代码 加数据断点并调试 总结 前言 "数据断点"这个说法是沿用在Visual Studio中学到的设置断点的方法,在gdb中一般被叫做&q ...
- linux单步调试方法,linux下gdb单步调试(中).doc
linux下gdb单步调试(中) linux下gdb单步调试(中) linux下gdb单步调试(中) 一.设置断点( BreakPoint ) 我们用 break 命令来设置断点.正面有几点设置断点的 ...
最新文章
- 日记-致我那易逝的时光
- 《HTML5 2D游戏编程核心技术》——第1章,第1.3节特别功能
- Dotnet全平台下APM-Trace探索
- 31 天重构学习笔记9. 提取接口
- sigar-amd64-linux.so,sigar,no libsigar-amd64-linux.so in java.library.path
- html不使用cache数据
- c# Socket Udp通讯示例源码
- Duilib--->Duilib库介绍总结概述
- Can‘t open /dev/sda3 exclusively. Mounted filesystem?
- 【论文阅读】Reviving Iterative Training with Mask Guidance for Interactive Segmentation
- 交换机远程连接(eNsp)
- 在字符串中 快速查找
- 北航计算机考博经验,北航考博经验总结和感受
- 国家二级计算机office知识点,2017年全国计算机二级office常见知识点
- linux世界里类似source insight的工具(zz)-如梦初醒-中国教育人博客
- MySQL数据库授权备份恢复
- [程序员] 女程序员的青春有几年
- iOS 11 NFC技术
- Navisworks2014-2020 安装说明
- python异步协程爬取百度小说之西游记