『Linux从入门到精通』第 ⑪ 期 - Linux调试器——gdb使用详解

Posted 花想云(西安第一深情)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了『Linux从入门到精通』第 ⑪ 期 - Linux调试器——gdb使用详解相关的知识,希望对你有一定的参考价值。



文章目录

💐专栏导读

🌸作者简介:花想云 ,在读本科生一枚,致力于 C/C++、Linux 学习。

🌸专栏简介:本文收录于 C语言初阶专栏,本专栏主要内容为本专栏主要内容为Linux的系统性学习,专为小白打造的文章专栏。

🌸相关专栏推荐:C语言初阶系列C语言进阶系列 C++系列数据结构与算法

💐文章导读

在VS环境下,我们不仅可以写代码、编译、运行可执行程序,还可以对生成的可执行程序进行调试。调试的作用就不用强调了吧,相信大家都懂的~一个合格的程序员,调试的技能是必备的。本章我们就来学习如何在Linux环境下进行调试。

🌷准备工作

要进行调试,首先得生成一个可执行程序,所以首先准备一个简单的C程序:

$ touch Test.c
$ vim Test.c
//C代码:
 #include<stdio.h>

int accumulate(int n)

	printf("Start\\n");
	int sum = 0;
	for (int i = 0; i <= n; i++)
	
		sum += i;
	
	printf("End\\n");
	return sum;


 int main()
 
	 int n = 100;
	 int ret = accumulate(n);
	 printf("%d\\n", ret);
	 return 0;
 

回顾一下make/Makefile的使用:

$ touch Makefile
$ vim Makefile
//Makefile的内容
Test:Test.c
	gcc Test.c -o Test -std=c99
.PHONE:clean
clean:
	rm -f Test

🌺注意事项

  • 此处的选项-std=c99的意义是:for循环中定义变量i的操作是c99才支持的,所以在编译时需要声明。否则,会出现如下报错:

🌷安装gdb调试器

在Linux中,我们使用gdb进行调试;切换root身份或使用sudo指令进行安装:

$ yum install -y gdb

出现如下文字即代表安装成功:

🌷如何进入调试?

生成可执行文件(Test)后,通过指令gdb [文件名]进入调试。

$ gdb Test

🌺注意事项

  • 若是直接对该Test文件进行调试,会出现无调试信息的报错,如下图:

  • 原因是一个程序的发布方式有两种:releasedebuggcc/g++默认生成的可执行程序是release版本。而我们都知道,调试针对的是debug版的可执行程序,因为只有debug版才包含调试信息
  • gcc/g++编译时,加上选项-g即可选择生成debug版的Test文件(为了区分,可在debug版的文件添加后缀-debugrelease版添加后缀-release)。

修正Makefile文件:

Test-debug:Test.c
	gcc Test.c -o Test-debug -g -std=c99

.PHONE:clean
clean:
	rm -f Test 

重新生成文件Test-debug,并进入调试。

$ make
$ gdb Test-debug

🌷调试相关指令

  • 🌼gdb [文件名] :进入调试;
  • 🌼Ctrl + dquit:退出调试;
  • 🌼list + [行号]l + [行号](简写形式):显示可执行程序的源代码。从行号出开始显示,一次显示10行。

(第一次使用该指令后,为了便捷可直接回车继续执行上一条指令。其它指令效果相同)

  • 🌼list + [函数名] l + [函数名] :显示某个函数的源代码;

  • 🌼runr :运行程序(若未设置断点则运行至程序结束);

  • 🌼break + [行号]b + [行号] :在某一行设置断点;

  • 🌼info + b 查看断点信息;

  • 🌼break + [函数名] :在某个函数开头设置断点;

  • 🌼delete/d breakpoint n :删除编号为n的断点;

  • 🌼delete/d breakpoint:删除所有断点;

  • 🌼disable breakpoint:禁用断点;

  • 🌼enable breakpoint:启用断点;

  • 🌼nextn :单条语句执行;

  • 🌼steps :进入函数调用;

  • 🌼finish:执行到当前函数返回,然后停下来等待命令;

  • 🌼printp:打印表达式的值,通过表达式可以修改变量的值或者调用函数;

  • 🌼p + 变量:打印变量值;

  • 🌼set + 变量:修改变量的值;

  • 🌼continuec:从当前位置开始运行直到下一个断点;

  • 🌼display + 变量名:跟踪查看一个变量,每次停下来都显示它的值;

  • 🌼undisplay:取消对先前设置的那些变量的跟踪;

  • 🌼until + 行号:跳至某一行去执行;

  • 🌼breaktracebt:查看各级函数调用及参数;

  • 🌼info + 变量 + locals:查看当前栈帧局部变量的值;

gdb常用的命令就总结到这里了。

🌺注意事项
学习gdb时,我们应该与VS环境下的调试进行对比更好理解,例如:

  • r 相当于vs中的 F5
  • b 相当于vs中的 设置断点
  • n 相当于vs中的 F10
  • s 相当于vs中的 F11(在函数处);
  • p/display 相当于vs中的 监视

🌺注意简写的使用
gdb中的指令一般都是可以简写的,例如:

  • list——l
  • run——r
  • break——b
  • delete——d
  • breakpoint——b
  • next——n
  • step——s
  • print——p
  • continue——c
  • breaktrace——bt

点击下方个人名片,可添加博主的个人QQ,交流会更方便哦~
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

TFS-CLUB社区 第5期赠书活动〖Python OpenCV从入门到精通〗等你来拿,参与评论,即可有机获得

文章目录



❤️‍🔥 赠书活动 - 《Python OpenCV从入门到精通》



内容简介:

《Python OpenCV从入门到精通》以在Python开发环境下运用OpenCV处理图像为主线,全面介绍OpenCV提供的处理图像的方法。

全书共分为16章,包括Python与OpenCV、搭建开发环境、图像处理的基本操作、像素的操作、色彩空间与通道、绘制图形和文字、图像的几何变换、图像的阈值处理、图像的运算、模板匹配、滤波器、腐蚀与膨胀、图形检测、视频处理、人脸检测和人脸识别以及MR智能视频打卡系统。

本书图文丰富,直观呈现处理后的图像与原图之间的差异;在讲解OpenCV提供的方法时,列举了其中的必选参数和可选参数,读者能更快地掌握方法的语法格式;最后一章以MR智能视频打卡系统为例,指导读者系统地运用OpenCV解决工作中的实际问题。本书专注于图像处理本身,尽可能忽略图像处理算法的具体实现细节,降低阅读和学习的难度,有助于读者更好更快地达到入门的目的。此外,本书资源包中提供了完整的示例源码、要使用到的图像等配套学习资源。


作者简介:

明日科技,全称是吉林省明日科技有限公司,是一家专业从事软件开发、教育培训以及软件开发教育资源整合的高科技公司,其编写的教材非常注重选取软件开发中的必需、常用内容,同时也很注重内容的易学、方便性以及相关知识的拓展性,深受读者喜爱。其教材多次荣获“全行业优秀畅销品种”“全国高校出版社优秀畅销书”等奖项,多个品种长期位居同类图书销售排行榜的前列。



全书共16章:

  • 第1篇 入门篇
  • 第2章 搭建开发环境
  • 第3章 图像处理的基本操作
  • 第4章 像素的操作
  • 第5章 GRAY色彩空间
  • 第6章 绘制图形和文字
  • 第7章 图像的几何变换
  • 第8章 图像的阈值处理
  • 第9章 图像的运算
  • 第10章 模板匹配
  • 第11章 滤波器
  • 第12章 腐蚀与膨胀
  • 第13章 图形检测
  • 第14章 视频处理
  • 第15章 人脸检测和人脸识别
  • 第16章 MR智能视频打卡系统


❤️‍🔥 编辑推荐


OpenCV的设计初衷是提供易于使用的计算机视觉接口,以帮助开发人员在实际开发中快速建立精巧的视觉应用。

为此,OpenCV库包含了从计算机视觉各个领域衍生出来的500多种方法。这使得OpenCV自测试版发布以来,就被广泛地应用在安保行业、航空领域和其他高精尖的科研工作中。

《近年来,随着Python语言的强势崛起,Python OpenCV已经成为一个很好的学习方向。



❤️‍🔥 内容提要


本书的写作思路是以入门为主、进阶为辅。全书共分4篇。

  • 第1篇:入门篇。本篇包括Python与OpenCV、搭建开发环境、图像处理的基本操作、像素的操作和色彩空间与通道。这些内容的作用相当于“扫盲”,即完成一个从“什么都不知道”到“掌握关键知识点”的转变过程,为学习后面的内容奠定基础。
  • 第2篇:基础篇。本篇介绍了绘制图形和文字、图像的几何变换、图像的阈值处理和图像的运算。学习完这一部分后,读者不仅能够直观地看到运用OpenCV处理图像后的效果,还能够了解OpenCV程序的编码步骤和注意事项。
  • 第3篇:进阶篇。本篇的内容较多,包含了6章内容,分别是模板匹配、滤波器、腐蚀与膨胀、图形检测、视频处理以及人脸检测和人脸识别。这6章内容虽然相对独立,但是在实际开发过程中,是相辅相成、相得益彰的。
  • 第4篇:项目篇。本篇通过一个完整的小型MR智能视频打卡系统,按照“需求分析→系统设计→文件系统设计→数据实体模块设计→工具模块设计→服务模块设计→程序入口设计”顺序,手把手指导读者运用Python OpenCV完成软件项目的开发实践。

本次送书 3 本 评论区抽三位小伙伴送书

活动时间:截止到 2022-11-13 20:00:00

抽奖方式:利用网络公开的在线抽奖工具进行抽奖

参与方式:关注博主、点赞、收藏,评论区评论 "人生苦短,拒绝内卷!"
迫不及待的小伙伴也可以访问下面的链接进行自主购买,图书疯狂28小时11.10晚20点开抢

京东自营购买链接: 《Python OpenCV从入门到精通》-京东图书


❤️‍🔥 赠书活动 → 获奖名单


名单公布时间: 2022-11-13 20:00:00

待定

以上是关于『Linux从入门到精通』第 ⑪ 期 - Linux调试器——gdb使用详解的主要内容,如果未能解决你的问题,请参考以下文章

『Linux从入门到精通』第 ⑩ 期 - Linux 如何使用 git | 新建仓库 | git 三板斧

『Linux从入门到精通』第 ⑥ 期 - Linux编辑器——vim(最小集+指令集+自动化配置)

TFS-CLUB社区 第5期赠书活动〖Python OpenCV从入门到精通〗等你来拿,参与评论,即可有机获得

linux从入门到精通(第2版)下载 񸠖

linux从入门到精通(第2版)pdf高清版免费下载

Linux自有服务-Linux从入门到精通第五天