【Linux】调试工具 - gdb

目录

一、gdb概述:

二、list(查看源文件代码):

三、run(运行程序):

​四、断点相关操作:

1、查看断点:

2、在指定行设置断点:  

3、在函数入口处设置断点: 

4、删除断点

5、禁用断点 / 启用断点

五、逐过程调试 / 逐语句调试:

1、逐过程调试:

2、逐语句调试:

六、常显示 / 去除常显示 :

1、常显示:

2、去除常显示:

3、打印变量名:

七、跳转至指定行与退出gdb:

1、跳转至指定行:  

2、退出gdb:


一、gdb概述:

  • 程序在发布时会有两种版本:Debug版本和Release版本。
  • Debug版本和Release版本其实就是优化级别的区别
  • Debug称为调试版本,编译的结果通常包含有调试信息,没有做任何优化,方便开发人员进行调试。
  • Release称为发布版本,不会携带调试信息,同时编译器对代码进行了很多优化,使代码更小,速度更快,发布给用户使用,给用户使用以更好的体验。
  • 在我们申请内存时,Debug模式会多申请一部分空间,分布在内存块的前后,用于存放调试信息。
  • 在Release模式下,编译器会对代码进行很多的优化操作,所以Release模式比Debug模式花的时间也会更多

而在Linux下 gcc/g++ 下生成的二进制程序默认是Release版本。要想进行调试操作就得要在源代码生成二进制程序时加上 -g 选项,将其改为Debug模式。

在接下来使用gdb调试时以以下代码为样例进行演示:

#include <stdio.h>

int Sum(int n)
{
	int i = 1, sum = 0;
	for (; i <= n; i++)
	{
		sum += i;
	}
	return sum;
}

int main()
{
	printf("%d\n", Sum(100));
	return 0;
}

二、list(查看源文件代码):

list 指令可以在命令行显示源文件对应的代码,一次显示十行,可以简写成l有两种用法:

1:l 行号  (从对应行号开始在命令行输出源文件代码,一次显示十行)

2:l 函数名   (在命令行中输出对应函数的源代码)

 

三、run(运行程序):

run指令可以直接运行程序,如果程序没有断点则将程序运行到结束

四、断点相关操作:

1、查看断点:

info break(可简写为:i b)查看断点:

 

2、在指定行设置断点:  

break 行号(可简写为:b 行号) 

例如:分别在14、15、16行处打一个断点 

3、在函数入口处设置断点: 

break 函数名(可简写为:b 函数名)

 例如:在函数Sum处打一个断点

4、删除断点

删除指定断点:delete Num(可简写为d Num)Num为断点的序号

删除全部断点:delete break(可简写为d break)

5、禁用断点 / 启用断点

禁用指定断点:disable Num      Num为断点的序号

 

启用指定断点:enable Num       Num为断点的序号

五、逐过程调试 / 逐语句调试:

1、逐过程调试:

step(可以简写为s) 

2、逐语句调试:

next(可以简写为n)

六、常显示 / 去除常显示 :

1、常显示:

display 变量名 / 地址       每次执行语句时都会在命令行中打印常显示变量的值

2、去除常显示:

undisplay 对应的编号

3、打印变量名:

p 变量名        在命令行中打印对应变量的值

七、跳转至指定行与退出gdb:

1、跳转至指定行:  

until 指定行

2、退出gdb:

quit(可简写为q)

  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值