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 ...
随机推荐
- Android測试APP工具(一)
近期面试APP开发者的时候,遇到了技术总监问 APP測试的概念性问题.后面感觉主要的项目流程.项目逻辑.屏幕适配. 測试是全然没有问题的.可是对于APP的性能測试.压力測试等高端的測试.还是存在着美中 ...
- BZOJ 2728 HNOI2012 与非 高斯消元
题目大意:给定k位二进制下的n个数,求[l,r]区间内有多少个数能通过这几个数与非得到 首先观察真值表 我们有A nand A = not A 然后就有not ( A nand B ) = A and ...
- Android面试题集
前几天整理了Java面试题集合,今天再来整理下Android相关的面试题集合.假设你希望能得到最新的消息,能够关注https://github.com/closedevice/interview-ab ...
- MongodDB用GridFS方式存取文件
在实现GridFS方式前我先讲讲它的原理,为什么可以存大文件.驱动首先会在当前数据库创建两个集合:"fs.files"和"fs.chunks"集合,前者记录了文 ...
- UVA 10859 - Placing Lampposts 树形DP、取双优值
Placing Lampposts As a part of the mission ‘Beautification of Dhaka City’, ...
- UVA 1515 Pool construction 最大流跑最小割
Pool construction You are working for the International Company for Pool Construction, a constructio ...
- input file上传文件
如何使用input[type='file']来上传文件呢? html: //angular<input type="file" (change)="fileChan ...
- 前端面试---常见的web安全及防护原理
一.常见的web安全及防护原理 1.sql注入原理 就是通过把sql命令插入到web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 防护,总的来说有以下几点: 1. ...
- 问题集锦 ~ PHP
#switch //当variable为数字0的时候,case为true,会执行第一段case代switch (variable) { case 'value': # code... break; d ...
- 列表查询组件代码, 简化拼接条件SQL语句的麻烦
列表查询组件代码, 简化拼接条件SQL语句的麻烦 多条件查询