当前位置: 首页 > news >正文

网站做系统九一赣州人才网

网站做系统,九一赣州人才网,张家港市规划建设网站,电子商务的理解环境:centos7.6,腾讯云服务器Linux文章都放在了专栏:【Linux】欢迎支持订阅🌹前言在前文,我们已经讲解了vim工具以及gcc/g的使用,我们可以进行编写代码以及编译代码了,但是还没有学习如何在Linu…
环境:centos7.6,腾讯云服务器
Linux文章都放在了专栏:【Linux】欢迎支持订阅🌹

前言

在前文,我们已经讲解了vim工具以及gcc/g++的使用,我们可以进行编写代码以及编译代码了,但是还没有学习如何在Linux下对代码进行调试,通过本章的学习,将学会如何使用gdb对代码进行调试。

gdb的安装:sudo yum install -y gdb(没有配置sudo的可以在root身份下输入 yum install -y gdb

gdb的使用

debug与release

我们知道,程序的发布有两个版本,Debug与Release版本。

Debug:调试版本
Release:发行版本(编译器会对我们的代码进行优化)
而我们一般都是在Debug下进行调试,但是Linux下gcc/g++生成的二进制程序时Release版本的,在此版本下我们无法进行调试

所以我们要在gcc编译时加上-g,这样生成的二进制程序就是Debug版了(我们可以输入指令:readelf -S 可执行程序,来查看该程序是否生成调试信息),在此版本下我们输入相关指令便可以进行调试。

gdb的启动与退出(q)

我们在生成debug的可执行程序后,直接输入指令gdb 可执行程序名 就可以进入调试状态,对该程序进行调试,输入q(或者quit、ctrl d)进行退出gdb。

gdb 可执行程序进入调试

q/quit/ctrl d退出调试

代码的查看(l)

我们在这种无图形化界面的Linux下调试时,如何看到我们的代码呢?很简单,只需要输入l(或者list),就可以查看我们的代码,这里我们简单写了一个排序代码,来研究gdb的使用。

输入l(list)显示我们的代码(默认从中间显示),我们在l后面加个数字,便可以从指定位置显示

(当然,我们后续不用再输入指令,直接按回车键依然会继续衔接上面的,往后打印10行。)当我们所有的代码显示全后,再次显示,则会出现这种情况,告知我们以及显示完了。

断点操作(b)

首先,假如我们没有设置断点,我们输入r(run),此时程序则会从开始,一直运行到结束。假如我们设置了断点,程序则会运行到断点处进行停止。

打断点

r运行程序,无断点的话,直接运行到结束,有断点运行到最近的断点处停止(r不能在断点间移动,即运行到最近断点处后,再次输入r,则会重新再次运行)
b(break) 行号:在某一行设置断点
b(break) 函数名:在该函数处设置断点

查看断点信息(info)

输入info b指令可以查看所有的断点详细信息

这里需要注意,断点的编号是逐渐累加的,也就是说,假如我们将该断点取消,再次进行设置,那么断点的编号就变成了2,除非退出gdb,否则一直累加。

那么问题来了,如何取消断点呢?

也很简单,d 断点编号 即可取消该断点

逐过程与逐语句调试(n\s)

所谓逐过程调试,就是对应着vs里的f10,即遇到函数不会进入。而逐语句调试对应着vs里的f11,遇到函数会进入函数内部。

n逐过程调试(不会进入函数)
s逐语句调试(会进入函数)

监视窗口(查看变量信息)(p)

这里我用换一个简单的代码,来方便我们进行观察。首先是观察我们的变量信息,指令:p 变量即可观察我们指定的变量。

不过这样有些傻傻的,就是我们每次查看变量,还得需要输入指令,太麻烦了,此时我们便可以使用指令display 变量查看变量信息,并常显示。当然,使用undisplay 编号 即可取消常显示。

p 变量:查看变量信息
display 变量:常显示变量信息
undisplay 变量编号:取消常显示

调用堆栈查看(bt)

我们知道,我们在进入main函数之前,main函数的函数栈帧是已经创建好了的,同样我们在Linux下也可以查看堆栈调用情况,输入指令bt即可

VS里main函数函数栈帧的创建

Linux下使用gdb调试bt命令观察所调用堆栈

跳转指定行(until)

在vs中,我们在调试时要想跳转至指定行号的地方,我们通常都是f9打断点,f5直接运行到该断点,来实现跳转,但是在gdb中,我们可以在不打断点的情况下跳转至我们指定的行号位置。

until 行号:不打断点情况下,直接跳转至指定行数

查看变量类型(ptype)

我们可以使用命令ptype 变量来查看该变量的类型。

断点之间跳转(c)

我们知道vs下可以使用f5来进行断点之间的切换,gdb中也可以,命令为c(vs中的f5)(vs中使用f5都是处于调试状态下,因此gdb也是如此)

关于gdb的其它一些指令

gdb的指令还有很多,以上主要讲了几个比较常用的,下面我将一些指令也都罗列出来,大家感兴趣的可以自己来亲自试验一下:

fifinish:执行到当前函数返回,然后挺下来等待命令
print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数
set var:修改变量的值
delete breakpoints:删除所有断点
disable breakpoints:禁用断点
enable breakpoints:启用断点
info(i) locals:查看当前栈帧局部变量的值

end.

生活原本沉闷,但跑起来就会有风!🌹

http://www.yayakq.cn/news/813546/

相关文章:

  • 中国建设银行陕西省分行网站建立企业网站 优帮云
  • 兰州网站建设张家界做网站找哪家好
  • 文案转行做网站编辑网站的建设的项目介绍怎么写
  • 北京小程序网站制作百度点击排名收费软件
  • 网站前台设计过程宿迁东岸网络技术有限公司
  • 湖南长沙网站建局域网网站建设的步骤过程
  • 网站从建设到运行要多少钱珠海网站网站建设
  • 商城网站一般用什么做二次开发贵州省公路建设有限公司网站
  • 网站再就业技能培训班建设银行网站用户权限
  • 设计类的网站和简介青岛网络科技公司排名
  • 什么网站能代做预算西安有哪些互联网公司
  • 免费广告推广平台网站推广优化怎么做最好
  • 建设一个好的网站温州网站建设公司排名
  • 无代码网站开发平台有哪些1688一件代发详细步骤
  • 网站后台上传软件自动跳转短网址
  • 郑州网站优化怎样做莆田制作网站企业
  • 温州58同城怎么做网站网站建设需要什么技能
  • 客户评价网站建设wordpress邮件重置密码
  • 城乡建设局网站首页怎么做自己公司的网页
  • 网站域名证书芜湖十大网络公司
  • 做聚美优品网站得多少钱百度关键词搜索排行榜
  • 门户网站是不是新媒体wordpress 自媒体主题
  • 专业企业建站系统网站销售方案
  • 郑州的做网站公司有哪些闵行网页设计师
  • 网站 dns 解析石家庄网站建设石家庄
  • 北京工程建设质量协会网站企业网站模板下载
  • 国际网站开发客户古典家具网站模板
  • 免费网站推广渠道网站优化北京
  • 网站建设及推广费记什么科目一个新手如何做网站
  • 长春网站建设网站源码婚纱摄影网站定制