linux下gdb单步调试(中)

linux下gdb单步调试(中)

linux下gdb单步调试(中)

一、设置断点( BreakPoint )

我们用 break 命令来设置断点。正面有几点设置断点的方法:

break

在进入指定函数时停住。 C++ 中可以使用 class::function 或 function(type,type) 格式来指定函数名。

break

在指定行号停住。

break +offset

break -offset

在当前行号的前面或后面的 offset 行停住。 offiset 为自然数。

break filename:linenum

在源文件 filename 的 linenum 行处停住。

break filename:function

在源文件 filename 的 function 函数的入口处停住。

break *address

在程序运行的内存地址处停住。

break

break 命令没有参数时,表示在下一条指令处停住。

break ... if

... 可以是上述的参数, condition 表示条件,在条件成立时停住。比如在循环境体中,可以设置 break if i=100 ,表示当 i 为 100 时停住程序。

查看断点时,可使用 info 命令,如下所示:(注: n 表示断点号)

info breakpoints [n]

info break [n]

二、设置观察点( WatchPoint )

观察点一般来观察某个表达式(变量也是一种表达式)的值是否有变化了,如果有变化,马上停住程序。我们有下面的几种方法来设置观察点:

watch

为表达式(变量) expr 设置一个观察点。一量表达式值有变化时,马上停住程序。

rwatch

当表达式(变量) expr 被读时,停住程序。

awatch

当表达式(变量)的值被读或被写时,停住程序。

info watchpoints

列出当前所设置了的所有观察点。

三、设置捕捉点( CatchPoint )

你可设置捕捉点来补捉程序运行时的一些事件。如:载入共享库(动态链接库)或是 C++ 的异常。设置捕捉点的格式为:

catch

当 event 发生时,停住程序。 event 可以是下面的内容:

1 、 throw 一个 C++ 抛出的异常。( throw 为关键字)

2 、 catch 一个 C++ 捕捉到的异常。( catch 为关键字)

3 、 exec 调用系统调用 exec 时。( exec 为关键字,目前此功能只在 HP-UX 下有用)

4 、 fork 调用系统调用 fork 时。( fork 为关键字,目前此功能只在 HP-UX 下有用)

5 、 vfork 调用系统调用 vfork 时。( vfork 为关键字,目前此功能只在 HP-UX 下有用)

6 、 load 或 load 载入共享库(动态链接库)时。( load 为关键字,目前此功能只在 HP-UX 下有用)

7 、 unload 或 unload 卸载共享库(动态链接库)时。( unload 为关键字,目前此功能只在 HP-UX 下有用)

tcatch

只设置一次捕捉点,当程序停住以后,应点被自动删除。

四、维护停止点

上面说了如何设置程序的停止点, GDB 中的停止点也就是上述的三类。在 GDB 中,如果你觉得已定义好的停止点没有用了,你可以使用 delete 、 clear 、 disable 、 enable 这几个命令来进行维护。

clear

清除所有的已定义的停止点。

clear

clear

清除所有设置在函数上的停止点。

clear

clear

清除所有设置在指定行上的停止点。

delete [breakpoints] [range...]

删除指定的断点, breakpoints 为断点号。如果不指定断点号,则表示删除所有的断点。 range 表示断点号的范围(如: 3-7 )。其简写命令为 d 。

比删除更好的一种方法是 disable 停止点, disable 了的停止点, GDB 不会删除,当你还需要时, enable 即可,就好像回收站一样。

disable [breakpoints] [range...]

disable 所指定的停止点, breakpoints 为停止点号。如果什么都不指定,表示 disable 所有的停止点。简写命令是 dis.

enable [breakpoi

linux单步调试方法,linux下gdb单步调试(中).doc相关推荐

  1. linux下gdb单步调试

    用 GDB调试程序 GDB 概述 ---- GDB 是 GNU开源组织发布的一个强大的 UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像 VC. BCB等 IDE的调试,但如果你是在 ...

  2. Linux环境下gdb程序调试

    目录 gdb介绍 进入gdb调试环境 指令学习 l(list)指令 b(break)指令 info b指令 d指令 r(run)指令 n(next)指令 s(step)指令 c(continue)指令 ...

  3. 我偶尔会用到的调试方法 | Linux 内核

    文章转自我朋友的公众号,以下为内容正文 ==== 大家好,我是你们的工具人老吴. 今天,和大家分享一下几个 Linux 内核的调试小技巧. 当你遇到一个 bug,你调试了 1 年半载都解决不了,这其实 ...

  4. 说说几个我偶尔会用到的调试方法 | Linux 内核

    大家好,我是你们的工具人老吴. 今天,和大家分享一下几个 Linux 内核的调试小技巧. 当你遇到一个 bug,你调试了 1 年半载都解决不了,这其实一件好事. 因为它会时刻提醒你平时写代码时要谨慎. ...

  5. linux应用程序调试方法,Linux应用程序使用写文件调试程序的方法

    Linux,一切皆文件,那么在Android系统本身,也是Linux+java罢了,也是在Linux的运行环境下. 通常,我们在调试程序的都会使用printf. 在Android中,我们会去使用log ...

  6. linux隐藏文件的方法,Linux下隐藏文件的操作方法

    Linux下隐藏文件的操作方法 发布时间:2020-04-11 11:32:34 来源:亿速云 阅读:550 作者:小新 今天小编给大家分享的是Linux下隐藏文件的操作方法,很多人都不太了解,今天小 ...

  7. linux应急处理方法,Linux系统下6个常见紧急情况的应急处理方法

    1.使用急救盘组进行维护 急救盘组(也称为boot/root盘组),是系统管理员必不可少的工具.用它可以独立地启动和运行一个完整的linux系统.实际 上,急救盘组中的第2张盘上就有一个完整的linu ...

  8. linux设备驱动程序调试方法,Linux设备驱动程序学习(2)-调试技术

    Linux设备驱动程序学习(2)-调试技术 Linux设备驱动程序学习(2)-调试技术 今天进入<Linux设备驱动程序(第3版)>第四章调试技术的学习. 一.内核中的调试支持 在前面已经 ...

  9. linux zcat 使用方法,Linux系统中zcat命令的知识详解

    Linux系统中的zcat命令不同于cat命令,它不用解压缩文件就能显示压缩包文件的内容,那么下面由学习啦小编为大家整理了linux系统中zcat命令的知识详解,希望对大家有帮助! Linux系统中z ...

最新文章

  1. HTMl中内联边框是怎样实现连接的
  2. 2021年春季学期-信号与系统-第十二次作业参考答案-第七小题
  3. 如何保住我们的头发?初级程序员的碎碎念
  4. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE)
  5. 【SpringBoot】Spring项目中value注解,@Value不能够读取到配置文件的值,无法成功注入值的问题汇总及解决
  6. 工作量不断增加的微软Azure,正缩小与亚马逊AWS的差距
  7. py导入包异常跳出_python~异常处理及包
  8. 无人车业务中的视觉三维重建
  9. PHP常用函数集合(可做桌面壁纸)
  10. 神经网络中的稀疏编码和自动编码了解一下
  11. z反变换计算机控制,计算机控制4.Z变换.ppt
  12. 开源python语音助手_python实现语音助手小思同学
  13. php加速模块cpan模块,查看perl模块和cpan模块介绍
  14. 分享暄桐好作业之《临〈岁朝清供图〉》
  15. 天嵌E9开发板tftp烧录eMMC教程(Android)
  16. C#程序运行报错Error while trying to retrieve text for error ORA-12154
  17. 视频教程:Java七大外企经典面试套路之基础篇
  18. 如何在R中使用floor()和ceiling()函数
  19. Rosetta基础3:ligand docking
  20. 彻底卸载 .NET 框架 -- .NET Framework Cleanup Tool

热门文章

  1. 017. 如何广泛吸收其他人的赚钱案例?
  2. nesC练习:计数器
  3. hashcode及哈希碰撞
  4. 异常处理——bindtap/catchtap绑定事件冒泡情况
  5. 改善python的91个建议_《改》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
  6. 第二课计算机ppt,学信息技术课件 第2课 认识计算机课件.ppt
  7. oracle中插入当前日期时间
  8. python中的颜色_python 中颜色的表示
  9. [转载]数字音频接口
  10. c语言写字符个数,利用c语言写出并判断字符的个数