【Linux初阶】Linux调试器-gdb使用 | gdb的 l/b/info/d/r/n/s/bt/finish/p/(un)display/q
创始人
2024-04-09 19:11:43
0

 🌟hello,各位读者大大们你们好呀🌟

🍭🍭系列专栏:【Linux初阶】

✒️✒️本篇内容:gdb使用相关背景知识,gdb的使用(打断点、查断点、消断点、调试运行、查看对应变量)

🚢🚢作者简介:计算机海洋的新进船长一枚,请多多指教( •̀֊•́ ) ̖́-

📡📡同期Linux工具文章:Linux环境下的 git 使用

目录

一、背景知识

二、gdb的使用

1. gdb安装

2. l - debug模式下查看代码

3. b、info、d - debug模式下打断点、查断点、去断电

4. r、n、s - 调试运行(逐过程、逐语句)

5. bt、finish - 查看调用堆栈、跑完对应函数

6. p - 查看对应变量和对应变量的地址

7. (un)display - 对特定变量进行常显示 

8. 修改变量值、禁用/启用断点、退出 (q)


一、背景知识

程序的发布方式有两种,debug模式和release模式(debug用于程序员调试,release对代码进行了优化,多给予用户使用)

Linux gcc/g++出来的二进制程序,默认是release模式

要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项,以debug方式发布

Linux环境下,调试默认为release模式,不能直接调试

 在makefile的gcc生成指令中加上 -g,使程序以debug方式发布

  • 这里是在源文件 mycode.c 和 main.c 后面加 -g ,(-DN=1可忽略)


二、gdb的使用

1.gdb安装

sudo yum install gdb    #普通用户
yum install gdb    #root用户


2.l - debug模式下查看代码

l显式可执行程序代码
l 0显式可执行程序第一行代码 - [小写英文L,数字0]
回车默认运行上一次的指令(第二次输入l,代码下翻)


3.b、info、d - debug模式下打断点、查断点、去断电

对应指令如下

  • break(b) 行号:在某一行设置断点
  • info(或i) breakpoints:参看当前设置了哪些断点
  • delete breakpoints n:删除序号为n的断点
  • delete breakpoints:删除所有断点

对应示例如下 

 


4.r、n、s - 调试运行(逐过程、逐语句)

 对应指令如下

  • r或run:运行程序
  • n 或 next:单条执行(逐过程)
  • s或step:进入函数调用(逐语句)


5.bt、finish - 查看调用堆栈、跑完对应函数

  对应指令如下

对应示例如下 

  • 进入到 ProncessOn () 函数中的堆栈调用情况

  •  运行完对应函数(进度条小程序),再查看对应的堆栈


6.p - 查看对应变量和对应变量的地址

  对应指令如下

  • p + 对应变量名 —— 查看对应变量
  • p + &对应变量名 —— 对应变量的地址

 

对应示例如下 (在循环中查看变量sum、i 及其地址)


7.(un)display - 对特定变量进行常显示 

  对应指令如下

  • display 变量名:跟踪查看一个变量,每次停下来都显示它的值
  • undisplay 变量名:取消对先前设置的特定变量的跟踪


8.修改变量值、禁用/启用断点、退出 (q)

  对应指令如下

  • set var:修改变量的值
  • disable breakpoints:禁用断点
  • enable breakpoints:启用断点
  • quit:退出gdb 


 🌹🌹Linux调试器-gdb的使用大概就讲到这里啦,博主后续会继续更新更多Linux操作系统的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!你们的支持是博主坚持创作的动力!💪💪

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...