linux单步调试方法,linux下gdb单步调试(中).doc
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相关推荐
- linux下gdb单步调试
用 GDB调试程序 GDB 概述 ---- GDB 是 GNU开源组织发布的一个强大的 UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像 VC. BCB等 IDE的调试,但如果你是在 ...
- Linux环境下gdb程序调试
目录 gdb介绍 进入gdb调试环境 指令学习 l(list)指令 b(break)指令 info b指令 d指令 r(run)指令 n(next)指令 s(step)指令 c(continue)指令 ...
- 我偶尔会用到的调试方法 | Linux 内核
文章转自我朋友的公众号,以下为内容正文 ==== 大家好,我是你们的工具人老吴. 今天,和大家分享一下几个 Linux 内核的调试小技巧. 当你遇到一个 bug,你调试了 1 年半载都解决不了,这其实 ...
- 说说几个我偶尔会用到的调试方法 | Linux 内核
大家好,我是你们的工具人老吴. 今天,和大家分享一下几个 Linux 内核的调试小技巧. 当你遇到一个 bug,你调试了 1 年半载都解决不了,这其实一件好事. 因为它会时刻提醒你平时写代码时要谨慎. ...
- linux应用程序调试方法,Linux应用程序使用写文件调试程序的方法
Linux,一切皆文件,那么在Android系统本身,也是Linux+java罢了,也是在Linux的运行环境下. 通常,我们在调试程序的都会使用printf. 在Android中,我们会去使用log ...
- linux隐藏文件的方法,Linux下隐藏文件的操作方法
Linux下隐藏文件的操作方法 发布时间:2020-04-11 11:32:34 来源:亿速云 阅读:550 作者:小新 今天小编给大家分享的是Linux下隐藏文件的操作方法,很多人都不太了解,今天小 ...
- linux应急处理方法,Linux系统下6个常见紧急情况的应急处理方法
1.使用急救盘组进行维护 急救盘组(也称为boot/root盘组),是系统管理员必不可少的工具.用它可以独立地启动和运行一个完整的linux系统.实际 上,急救盘组中的第2张盘上就有一个完整的linu ...
- linux设备驱动程序调试方法,Linux设备驱动程序学习(2)-调试技术
Linux设备驱动程序学习(2)-调试技术 Linux设备驱动程序学习(2)-调试技术 今天进入<Linux设备驱动程序(第3版)>第四章调试技术的学习. 一.内核中的调试支持 在前面已经 ...
- linux zcat 使用方法,Linux系统中zcat命令的知识详解
Linux系统中的zcat命令不同于cat命令,它不用解压缩文件就能显示压缩包文件的内容,那么下面由学习啦小编为大家整理了linux系统中zcat命令的知识详解,希望对大家有帮助! Linux系统中z ...
最新文章
- HTMl中内联边框是怎样实现连接的
- 2021年春季学期-信号与系统-第十二次作业参考答案-第七小题
- 如何保住我们的头发?初级程序员的碎碎念
- You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE)
- 【SpringBoot】Spring项目中value注解,@Value不能够读取到配置文件的值,无法成功注入值的问题汇总及解决
- 工作量不断增加的微软Azure,正缩小与亚马逊AWS的差距
- py导入包异常跳出_python~异常处理及包
- 无人车业务中的视觉三维重建
- PHP常用函数集合(可做桌面壁纸)
- 神经网络中的稀疏编码和自动编码了解一下
- z反变换计算机控制,计算机控制4.Z变换.ppt
- 开源python语音助手_python实现语音助手小思同学
- php加速模块cpan模块,查看perl模块和cpan模块介绍
- 分享暄桐好作业之《临〈岁朝清供图〉》
- 天嵌E9开发板tftp烧录eMMC教程(Android)
- C#程序运行报错Error while trying to retrieve text for error ORA-12154
- 视频教程:Java七大外企经典面试套路之基础篇
- 如何在R中使用floor()和ceiling()函数
- Rosetta基础3:ligand docking
- 彻底卸载 .NET 框架 -- .NET Framework Cleanup Tool
热门文章
- 017. 如何广泛吸收其他人的赚钱案例?
- nesC练习:计数器
- hashcode及哈希碰撞
- 异常处理——bindtap/catchtap绑定事件冒泡情况
- 改善python的91个建议_《改》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
- 第二课计算机ppt,学信息技术课件 第2课 认识计算机课件.ppt
- oracle中插入当前日期时间
- python中的颜色_python 中颜色的表示
- [转载]数字音频接口
- c语言写字符个数,利用c语言写出并判断字符的个数