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来控制:

  1. set step-mode
  2. set step-mode on
  3. set step-mode off

on就可以使step停止在没有debug信息的函数的第一条指令上。off则是直接执行完这个函数。

这里要注意上面的命令都只是跳一行代码。而不是一条指令。

stepi是执行指令。nexti也是。

gdb可以监测在你的程序中的任何信号。

gdb学习-checkpoint,watch的更多相关文章

  1. gdb学习

    gdb学习 [参考资料] http://www.cnblogs.com/jiu0821/p/4483804.html 程序的运行状态有"运行"."暂停".&qu ...

  2. Linux之GDB学习

    Linux之GDB学习 GDB是一款优秀的调试工具,懂的人自然懂,一直以来用它都没有好好整理过使用方法,我用的也是皮毛,目前先整理一下皮毛,日后再更新 使用方法 编译C++ 从编译的角度上来说,需要在 ...

  3. Linux相关——关于gdb的checkpoint & breakpoints指令

    1,checkpoint ,,,这个指令简直,,,相见恨晚啊,居然现在才发现,.. 好吧来介绍一下这个指令:checkpoint(检查点) 我们调试程序,常常会出现好不容易发现了错误,却已经跑完那个地 ...

  4. GDB 学习

    通常使用gdb在Linux下调试C/C++程序,编译的时候加上-g选项(gcc -g ......).下面总结的是我自己经常使用(当然也有一些用的比较少)的gdb命令. (1)开始及退出 开始:gdb ...

  5. GCC/GDB学习

    GCC学习 1.gcc是根据后缀名来区分文件的 .c : c语言源文件 .a : 目标文件构成的库文件 .C/.cc/.cxx : c++源文件 .h : 头文件 .i : 预处理过的C源文件 .ii ...

  6. GDB使用checkpoint复现bug

    今天面试被问到一个问题,如何调试多进程的程序,我回答gdb attach [pid],之后又问如果程序中有些数据读取不对,但这种现象是偶然发生的,这时候要怎么操作,当时就懵了......,通过查找资料 ...

  7. GDB学习之道:GDB调试精粹及使用实例

    一:列文件清单  1. List  (gdb) list line1,line2 二:执行程序  要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出 ...

  8. gdb学习(一个)[再版]

    概要 gdb是GNU debugger的缩写,是编程调试工具. 功能 1.启动程序,能够依照用户自己定义的要求随心所欲的执行程序. 2.可让被调试的程序在用户所指定的断点处停住 (断点能够是条件表达式 ...

  9. gdb学习(二)[第二版]

    查看运行时数据 print - 查看变量值 ptype – 查看变量类型 #ptype i #ptype "aaa" 打印字符串"aaa"的类型 #ptype  ...

随机推荐

  1. 关于sql连接查询(内联、左联、右联、全联)

    内连接(INNER JOIN)(典型的连接运算,使用像   =   或   <>   之类的比较运算符).包括相等连接和自然连接. 内连接使用比较运算符根据每个表共有的列的值匹配两个表中的 ...

  2. Ajax-URL 防止数据缓存,添加时间戳

    url:CONTEXTPATH + "/dataService/getSourceStatics?type=0&t="+new Date().getTime(),

  3. 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 ...

  4. Spring-SpringJdbcTemlate配置介绍

    使用spring的jdbcTemplate进一步操作JDBC 一.普通配置  SpringJdbcTemplate连接数据库并操作数据 1.applicationContext.xml 1.1 建立D ...

  5. tomcat为什么要禁用session?

    转载请标明出处:http://blog.csdn.net/goldenfish1919/article/details/47829755 我们先来做一个实验,用jmeter对tomcat下的一个jsp ...

  6. Oracle数据处理

    DML语言             &:地址符:(PrepareStament)             批处理:插入--------一次将10号部门的员工插入新的表中:           ...

  7. angularjs1-5,class,

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  8. 9. Palindrome Number[E]回文数

    题目 Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same b ...

  9. 五步完成一个 VSCode 扩展(插件)开发

    第一步: 安装扩展生成器 npm install -g yo generator-code vsce 第二步: 初始化一个 Hello World 扩展 yo code 图来自 CN-VScode-D ...

  10. 前端面试---常见的web安全及防护原理

    一.常见的web安全及防护原理 1.sql注入原理 就是通过把sql命令插入到web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 防护,总的来说有以下几点: 1. ...