Linux调试器 gdb/cgdb

gbd基本概念
GDB (GNU Debugger) 是一个强大的命令行调试工具,用于调试各种编程语言(如C、C++、Java、Python等)编写的程序。使用 gdb可以帮助开发人员更快地定位和修复程序中的缺陷,提高代码质量和开发效率。它是 Linux/Unix 系统上最常用的调试工具之一。

1. 背景

程序的发布方式有两种, debug 模式和 release 模式
Linux gcc/g++ 出来的二进制程序,默认是 release 模式,不可调试
要使用 gdb 调试,必须在源代码生成二进制程序的时候 , 加上 - g 选项

可以看到的是,debug版本的可执行程序test.d明显比release版本test.r的大。

readelf命令

我们可以通过readelf指令来查看可执行文件中有没有调试信息。

2. 开始使用

语法:gdb + debug版本文件

  退出: ctrl + d q
  调试命令:
list l 行号:显示 binFile 源代码,接着上次的位置往下列,每次列 10 行。
list l 函数名:列出某个函数的源代码。
break/b 行号:在某一行设置断点
break/b函数名:在某个函数开头设置断点
info break /i b:查看断点信息。
delete breakpoints/d :删除所有断点
delete breakpoints n/d  n:删除序号为 n 的断点
disable n:禁用序号为 n 的断点
enable n:启用序号为 n 的断点
r/run:从开始连续而非单步执行程序
c/continue:从当前位置开始连续而非单步执行程序,c用于断点间的跳转
n/next:单条执行,n不会进入函数内部,把函数调用看成一个语句执行
s/step:进入函数调用
finish:执行到当前函数返回,然后停下来等待命令
until 行号:跳至n
p/print 变量名:打印变量或者表达式的值,通过表达式可以修改变量的值或者调用函数
display  变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay n :取消对先前设置的编号为n的变量的跟踪
set var :修改变量的值
breaktrace( bt) :查看各级函数调用及参数
info i) locals :查看当前栈帧局部变量的值

3. cgdb

cgdb(Code Ground Debugger)是一个基于GNU Debugger(gdb)的前端,它提供了一个类似文本编辑器的界面,允许用户在终端中以图形化的方式进行代码调试。cgdb使用ncurses库来创建一个分屏界面,其中一个屏幕显示源代码,另一个屏幕显示gdb的命令行界面。这种设计使得调试过程更加直观和高效,尤其是对于习惯使用Vim等文本编辑器的用户来说,cgdb提供了一种熟悉的操作体验。

安装cgdb通常可以通过系统的包管理器来完成,例如在Ubuntu系统中可以使用sudo apt-get install cgdb命令进行安装。启动CGDB时,可以通过cgdb [executable]命令指定要调试的可执行文件路径。在cgdb中,用户的使用方法和gdb相同,即上述所列均可以使用,用户可以通过按 ESC 键切换到代码窗口,按 i 键切换到 gdb 窗口,使用空格键设置或取消断点,以及使用其他快捷键进行代码导航等操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我要满血复活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值