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
* 1 process 2060 at 0x80483e7, file test.c, line 33
  0 process 2059 (main process) at 0x80483f7, file test.c, line 35

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 403
commands
///不输出任何东西
silent
///改变x的值
set x = y + 4
///然后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可以监测在你的程序中的任何信号。

时间: 2024-10-26 09:43:48

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

[Debug]GDB学习笔记(一)

GDB学习 点击打开链接 比较详细的gdb命令 gcc编译的程序要带 -g 参数,要想运行准备调试的程序,可使用run(r)命令,在它后面可以跟随发给该程序的任何参数 其它相关备忘如何在gdb下调用shell命令:答:比如要查看当前目录,只要输入 shell pwd就好了 单步调试的一些相关命令答:step <count>单步跟踪,如果有函数调用,他会进入该函数(进入函数的前提是,此函数被编译有debug信息).next <count>同样单步跟踪,如果有函数调用,他不会进入该函数

gdb学习(二)[第二版]

查看运行时数据 print - 查看变量值 ptype – 查看变量类型 #ptype i #ptype "aaa" 打印字符串"aaa"的类型 #ptype array 打印数组array的类型 #ptype main 打印main函数的类型 print array – 查看数组 #p arr1 #p arr1[2] 查看数组arr2第三个元素值 #p &arr1[2] 打印数组元素的地址 #p &arr1 打印数组首地址,与p &arr1

gdb学习[第二版]

概述 gdb是GNU debugger的缩写,是编程调试工具. 功能 1.启动程序,可以按照用户自定义的要求随心所欲的运行程序. 2.可让被调试的程序在用户所指定的断点处停住 (断点可以是条件表达式). 3.当程序停住时,可以检查此时程序中所发生的事. 4.动态改变程序的执行环境. 示例: gcc -Wall -g simple.c -o simple #一定要记得加上-g选项,以便生成调试信息 启动gdb:gdb [-q] [executable-file] [core-file] gdb s

gdb学习(一个)[再版]

概要 gdb是GNU debugger的缩写,是编程调试工具. 功能 1.启动程序,能够依照用户自己定义的要求随心所欲的执行程序. 2.可让被调试的程序在用户所指定的断点处停住 (断点能够是条件表达式). 3.当程序停住时,能够检查此时程序中所发生的事. 4.动态改变程序的执行环境. 演示样例: gcc -Wall -g simple.c -o simple #一定要记得加上-g选项,以便生成调试信息 启动gdb:gdb [-q] [executable-file] [core-file] gd

Gdb学习笔记1

其实,从很早就开始接触gdb程序,gdb调试程序伴我成长,现在对其用法记录以下: 当程序的运行结果和预期结果不一致,或者程序出现运行错误时,gdb就可以派上大用处了.调试的基本过程是: -> 根据情况,分析现象 -> 根据直觉,假设原因 -> 根据经验,修改验证 -> | | <-   根据经验,修改验证 <-  根据直觉,假设原因 <- 根据情况,分析现象 <- 直到程序的结果和预期完全一致为止,就可以结束苦逼的程序调试了.调试器(如GDB)的目的是允许你

gdb 学习

http://www.cnblogs.com/TianFang/archive/2013/01/21/2869474.html http://www.cnblogs.com/evasnowind/archive/2010/11/07/1871324.html 在使用gdb前,必须先载入可执行文件,因为要进行调试,文件中就必须包含调试信息,所以在用gcc或cc编译时就需要用-g参数来打开程序的调试选项. 调试开始时,必须先载入要进行调试的程序,可以用以下两种方式: * 在启动gdb后执行以下命令:

Linux GDB学习

gdb gcc 编译选项加上 –g ,这样生成的目标代码中就添加了调试信息. gcc –g –o hello hello.c redhat 6.3 默认是不安装gdb的,如果安装从系统光盘(ios镜像文件),将其解压在Packages文件夹下找到         gdb-7.2-56.el6.i686.rpm,然后执行以下命令: rpm -ivh gdb-7.2-56.el6.i686.rpm(因为版本不同数字部分可能不同) 1. 启动GDB 指令:gdb 程序名[corefile] coref

gdb学习笔记

设置断点 b main; 在main()入口处 b 148; 在第148行 查看断点 info b 运行程序 r 单条语句执行 n 继续运行程序 c 打印变量i的值 p i 查看函数堆栈 bt 退出函数 finish help命令只是例出gdb的命令种类,如果要看种类中的命令,可以使用help <class> 命令,如:help breakpoints,查看设置断点的所有命令.也可以直接help <command>来查看命令的帮助. TAB可补全函数名,命令名 在gdb中,我们可以

gdb学习(一)

 概述 gdb是GNU debugger的缩写,是编程调试工具. 功能 1.启动程序,可以按照用户自定义的要求随心所欲的运行程序. 2.可让被调试的程序在用户所指定的断点处停住 (断点可以是条件表达式). 3.当程序停住时,可以检查此时程序中所发生的事. 4.动态改变程序的执行环境. 示例: gcc -Wall -g simple.c -o simple #一定要记得加上-g选项,以便生成调试信息 启动gdb:gdb [-q] [executable-file] [core-file] gd