gdb学习-checkpoint,watch
checkpoint的内容参考:
http://blog.chinaunix.net/uid-23629988-id-2943273.html
这一篇主要是checkpoint,在next之前加checkpoint命令,然后就可以用 restart 1 来恢复到之前的checkpoint,可以避免从头再来。
用 info checkpoints 可以看到所有的checkpoints。
好像也能看到breakpoint的
(gdb) info checkpoints
* process at 0x80483e7, file test.c, line
process (main process) at 0x80483f7, file test.c, line
watch看
http://simohayha.iteye.com/blog/493091
watch是监测变量改变。watch expr [thread threadno] 是只针对这个线程对变量的改变。
rwatch是针对变量被读; awatch是针对变量被改变或者被读。
break是断点
tbreak是一次性的断点。
break location if condition 是condition为真的时候,到达这个location才会生效。
rbreak是带有regex的断点。
catch event是当事件发生的时候,会生效,
这些事件包括了:throw, catch, exception, exception unhandled, assert, exec, fork, vfork等。
tcatch指一次性的catch.
一个断点(包括 watchpoint和catchpoint)可以有下面四种状态. :
打开,关闭,enabled once,enabled for deletion
分别对应下面的:
disable [breakpoints][range..] 关闭指定的断点或者全部断点(如果没有range)
enable [breakpoints][range..] 打开指定的断点或者全部断点(如果没有range)
enable [breakpoints] once range 临时打开指定的断点(也就是说是一次性的,.
enable [breakpoints] delete range 临时打开指定的断点并只工作一次,也就是一次之后这个断点将会被删除.
clear删除断点,
clear location, 最常用的是:
clear function, clear file:function, clear linenum, clear file:linenum.
clear与delete的区别,clear是给出行号或者函数,而delete是给出断点编号。
condition除了跟在break后面,也是可以单独作为命令使用的:break condition
contidition bnum expression 当expression为真的时候,程序到达这个断点才会停止.
contidition bnum 从断点bnum删除掉一个condition.
ignore bnum count 设置一个断点bnum的忽略次数为count.也就是只有count次数后,这个断点才会起作用.
break里面还可以带上一串命令:
break
commands
///不输出任何东西
silent
///改变x的值
set x = y +
///然后continue
cont
end
用commands + end 来实现
step [count]
加count,是step多次,如果遇到断点会停止。
next [count]
和step很类似,区别就是不会跟进函数。
step的行为通过step-mode来控制:
- set step-mode
- set step-mode on
- set step-mode off
on就可以使step停止在没有debug信息的函数的第一条指令上。off则是直接执行完这个函数。
这里要注意上面的命令都只是跳一行代码。而不是一条指令。
stepi是执行指令。nexti也是。
gdb可以监测在你的程序中的任何信号。
gdb学习-checkpoint,watch的更多相关文章
- gdb学习
gdb学习 [参考资料] http://www.cnblogs.com/jiu0821/p/4483804.html 程序的运行状态有"运行"."暂停".&qu ...
- Linux之GDB学习
Linux之GDB学习 GDB是一款优秀的调试工具,懂的人自然懂,一直以来用它都没有好好整理过使用方法,我用的也是皮毛,目前先整理一下皮毛,日后再更新 使用方法 编译C++ 从编译的角度上来说,需要在 ...
- Linux相关——关于gdb的checkpoint & breakpoints指令
1,checkpoint ,,,这个指令简直,,,相见恨晚啊,居然现在才发现,.. 好吧来介绍一下这个指令:checkpoint(检查点) 我们调试程序,常常会出现好不容易发现了错误,却已经跑完那个地 ...
- GDB 学习
通常使用gdb在Linux下调试C/C++程序,编译的时候加上-g选项(gcc -g ......).下面总结的是我自己经常使用(当然也有一些用的比较少)的gdb命令. (1)开始及退出 开始:gdb ...
- GCC/GDB学习
GCC学习 1.gcc是根据后缀名来区分文件的 .c : c语言源文件 .a : 目标文件构成的库文件 .C/.cc/.cxx : c++源文件 .h : 头文件 .i : 预处理过的C源文件 .ii ...
- GDB使用checkpoint复现bug
今天面试被问到一个问题,如何调试多进程的程序,我回答gdb attach [pid],之后又问如果程序中有些数据读取不对,但这种现象是偶然发生的,这时候要怎么操作,当时就懵了......,通过查找资料 ...
- GDB学习之道:GDB调试精粹及使用实例
一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出 ...
- gdb学习(一个)[再版]
概要 gdb是GNU debugger的缩写,是编程调试工具. 功能 1.启动程序,能够依照用户自己定义的要求随心所欲的执行程序. 2.可让被调试的程序在用户所指定的断点处停住 (断点能够是条件表达式 ...
- gdb学习(二)[第二版]
查看运行时数据 print - 查看变量值 ptype – 查看变量类型 #ptype i #ptype "aaa" 打印字符串"aaa"的类型 #ptype ...
随机推荐
- 关于sql连接查询(内联、左联、右联、全联)
内连接(INNER JOIN)(典型的连接运算,使用像 = 或 <> 之类的比较运算符).包括相等连接和自然连接. 内连接使用比较运算符根据每个表共有的列的值匹配两个表中的 ...
- Ajax-URL 防止数据缓存,添加时间戳
url:CONTEXTPATH + "/dataService/getSourceStatics?type=0&t="+new Date().getTime(),
- ASP.Net MVC – What are the uses of Display, DisplayName, DisplayFormat and ScaffoldColumn attributes
http://www.codeproject.com/Articles/775220/ASP-Net-MVC-What-are-the-uses-of-Display-DisplayNa?utm_so ...
- Spring-SpringJdbcTemlate配置介绍
使用spring的jdbcTemplate进一步操作JDBC 一.普通配置 SpringJdbcTemplate连接数据库并操作数据 1.applicationContext.xml 1.1 建立D ...
- tomcat为什么要禁用session?
转载请标明出处:http://blog.csdn.net/goldenfish1919/article/details/47829755 我们先来做一个实验,用jmeter对tomcat下的一个jsp ...
- Oracle数据处理
DML语言 &:地址符:(PrepareStament) 批处理:插入--------一次将10号部门的员工插入新的表中: ...
- angularjs1-5,class,
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 9. Palindrome Number[E]回文数
题目 Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same b ...
- 五步完成一个 VSCode 扩展(插件)开发
第一步: 安装扩展生成器 npm install -g yo generator-code vsce 第二步: 初始化一个 Hello World 扩展 yo code 图来自 CN-VScode-D ...
- 前端面试---常见的web安全及防护原理
一.常见的web安全及防护原理 1.sql注入原理 就是通过把sql命令插入到web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 防护,总的来说有以下几点: 1. ...