GDB技巧:使用checkpoint解决难以复现的Bug
本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。
作者:gfree.wind@gmail.com
博客:linuxfocus.blog.chinaunix.net
- #include <stdlib.h>
- #include <stdio.h>
- static int func()
- {
- static int i = 0;
- ++i;
- if (i == 2) {
- return 1;
- }
- return 0;
- }
- static int func3()
- {
- return func();
- }
- static int func2()
- {
- return func();
- }
- static int func1()
- {
- return func();
- }
- int main()
- {
- int ret = 0;
- ret += func1();
- ret += func2();
- ret += func3();
- return ret;
- }
- (gdb) b main
- Breakpoint 1 at 0x80483e0: file test.c, line 31.
- (gdb) r
- Starting program: /home/fgao/works/test/a.out
- Breakpoint 1, main () at test.c:31
- 31 int ret = 0;
- Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.i686
- (gdb) n
- 33 ret += func1();
- (gdb) checkpoint
- checkpoint: fork returned pid 2060.
- (gdb)
- Breakpoint 1, main () at test.c:31
- 31 int ret = 0;
- (gdb) n
- 33 ret += func1();
- (gdb) checkpoint
- checkpoint: fork returned pid 2060.
- (gdb) n
- 34 ret += func2();
- (gdb) p ret
- $4 = 0
- (gdb) n
- 35 ret += func3();
- (gdb) p ret
- $5 = 1
- (gdb) restart 1
- Switching to process 2060
- #0 main () at test.c:33
- 33 ret += func1();
- (gdb)
- (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
转载于:https://blog.51cto.com/tonghuix/1165828
GDB技巧:使用checkpoint解决难以复现的Bug相关推荐
- 每日一皮:一个难以复现的 bug ...
往期推荐 每日一皮:史上最直观的单向循环链表,还不懂算我输! 每日一皮:当我看到Bug背后的一切...我退缩了... 每日一皮:重构时总会出现的惊喜....... 每日一皮:实习生将他的代码交给高级开 ...
- IOS小技巧–用runtime 解决UIButton 重复点击问题
IOS小技巧–用runtime 解决UIButton 重复点击问题 什么是这个问题 我们的按钮是点击一次响应一次, 即使频繁的点击也不会出问题, 可是某些场景下还偏偏就是会出问题. 通常是如何解决 我 ...
- android8卡顿,看完就明白为什么安卓手机卡顿,这个技巧教你解决卡顿
原标题:看完就明白为什么安卓手机卡顿,这个技巧教你解决卡顿 Android由源代码开放,所以安卓手机拥有更多的黑科技功能.很多安卓用户觉得手机卡顿,其实是没有好好利用这些神奇功能.下面笔者就为大家介绍 ...
- Mac使用技巧:如何解决键盘被锁的问题?
日常使用电脑的时候,经常会遇到一开机就发现键盘什么键都按不了的情况,刚开始以为是死机,检测后发现是键盘被锁定了,是按到什么不知名的快捷键导致的?那么要怎么解决mac键盘被锁住的问题?一起看看吧! 解决 ...
- oracle enq ta,【案例】Oracle等待事件event enq: KO - fast object checkpoint解决办法
[案例]Oracle等待事件event enq: KO - fast object checkpoint解决办法 时间:2016-11-03 10:11 来源:Oracle研究中心 作者:HT ...
- MacBook使用技巧:如何解决经常死机
Macbook 苹果笔记本电脑经常死机的原因: 1. 系统出现问题. 2.主板有问题,主板工作不正常. 针对以上原因,建议您尝试以下方式来解决问题: 1.查看你的软件是否存在不兼容的问题.经常引起死机 ...
- AE技巧-有效预防/解决AE CC 2010、2017和2018字体报错问题CT generic: not ascii(83 :: 2)
AE技巧-有效预防/解决AE CC 2010.2017和2018字体报错问题After Effects error: CT generic: not ascii (83 :: 2) 相信很多人对这个弹 ...
- vim 使用技巧 set paste 解决粘贴乱序问题
vim 使用技巧 set paste 解决粘贴乱序问题
- 张驰咨询:质量人如何运用六西格玛培训解决难以突破的技术问题
六西格玛是一种基于数据和统计的方法,旨在改进业务流程,提高质量和效率.作为质量人员,您可以使用这种方法来解决难以突破的技术问题,以下是六西格玛培训解决技术问题的步骤: 1.确定问题范围和定义问题 在使 ...
最新文章
- jquery键盘事件
- 一个顾客买了价值x元的商品(C语言)
- 提高ASP.NET首页性能的十大方法
- AS3.0第一个实例:(Hello World)
- python多个变量的for循环
- Hive2.1.1、Hadoop2.7.3 部署
- PHP处理图片导致内存溢出
- 完成端口可用回射服务器
- vscode 配置import @ 路径提示及代码智提
- c语言输出字母随机数,你好,怎样用c语言输出一个1到100的随机数
- fullAvatarEditor富头像上传编辑器
- 查看SQL语句执行耗费的时间
- Problem:跳房子
- Win10中安装Oracle11g
- 随机森林(Random Forest)算法原理
- linux 775和777权限有什么区别
- 多约束条件求最优值matlab,[MATLAB数学相关] 请教,约束条件下多元函数最小值的求解...
- 我的springBoot框架学习总结
- halt ,poweroff和shutdown 的区别
- Python pandas在读取csv文件时(linux与windows之间传输),数据行数不一致的问题