【Linux】gdb的简单使用

文章目录

  • 一、gdb是什么?
  • 二、使用说明
    • 1. 安装
    • 2. 注意事项
    • 3. 常用调试指令
      • 3.1 gdb
      • 3.2 l
      • 3.3 r
      • 3.4 n
      • 3.5 s
      • 3.6 b
      • 3.7 info b
      • 3.8 finish
      • 3.9 p
      • 3.10 set var
      • 3.11 c
      • 3.12 d breakpoints
      • 3.13 d n
      • 3.14 disable/enable breakpoints
      • 3.15 disable/enable n
      • 3.16 info b
      • 3.17 display 变量名/undisplay 编号
      • 3.18 until n
      • 3.19 bt
      • 3.20 ctrl + d/quit


一、gdb是什么?

gdb 是在 Linux 系统中的一款调试工具.

二、使用说明

1. 安装

首先先检测是否安装有 gdb:

gdb -v

没有安装应该会提示: command not found. 此时输入指令进行安装:

yum -y install gdb

而已经装有了, 则会显示类似信息:
在这里插入图片描述

2. 注意事项

在 Linux 下编译 C/C++ 代码时, 默认是 Release 版本的, 而 Release 版本是不携带调试信息的, 所以直接调试会失败:
在这里插入图片描述
因此在编译时要加上 -g 选项:

g++ -o gdbTest gdbTest.cpp -g

此时就可以正常调试了:
在这里插入图片描述

3. 常用调试指令

用于当作例子使用 gdb 调试的代码, 其功能就是根据给定的 n, 从 1 累加到 n:

#include <iostream>
using namespace std;int func(int n) 
{cout << "enter func" << endl;int sum = 0;for (int i = 1; i <= n; ++i){sum += i;}cout << "quit func" << endl;return sum;
}int main()
{int n = 100;int res = func(n);cout << "res: " << res << endl;return 0;
}

3.1 gdb

gdb + 可执行文件名: 进入调试界面
在这里插入图片描述

3.2 l

l + 行号: 以那一行为开头显示 10 行的代码, 往后可以直接按回车, 则接着上次的位置往后显示代码, 一次显示10 行.
在这里插入图片描述
l + 函数名: 以函数名所在的那一行为中心显示 10 行的代码, 往后可以直接按回车, 则接着上次的位置往后显示代码, 一次显示10 行.
在这里插入图片描述

3.3 r

在调试的状态下, 直接运行完整个程序, 类似于 vs 中的 ctrl + F5, 打了断点之后, 按 r 会直接运行到断点位置.
在这里插入图片描述

3.4 n

单条执行, 相当于 vs 中的 F10, 遇到函数不会进入其内部, 需要配合打断点使用, 先通过 r 运行到断电处, 此时再输入 n 即可实现单步调试.
在这里插入图片描述

3.5 s

相当于 vs 中的 F10, 遇到函数会进入其内部, 需要配合打断点使用, 先通过 r 运行到断电处, 此时再输入 s 即可实现调试.
在这里插入图片描述

3.6 b

b + 行号: 给该行打上断点.
在这里插入图片描述

b + 函数名: 给某个函数名的第一行执行语句打上断点.
在这里插入图片描述
虽然函数名在第 4 行, 但是该函数会执行的第一句语句在第 6 行, 所以断点打在了第 6 行.
在这里插入图片描述

3.7 info b

查看本次调试中打过的所有断点.
在这里插入图片描述

3.8 finish

进入函数后, 执行完整个函数, 并返回.
在这里插入图片描述

3.9 p

打印变量的值.
在这里插入图片描述
在这里插入图片描述
但它不是一直显示的, 在执行其他语句时会把它冲掉.

3.10 set var

设置变量的值, 可用于在循环中跳转到某一值.
在这里插入图片描述

3.11 c

从当前语句开始连续执行到离其最近的断点处, 可在循环外打上断点, 让其直接执行完循环, 直接获得循环结果.
在这里插入图片描述

3.12 d breakpoints

删除所有断点, 直接输入 d 也会达到同样的效果
在这里插入图片描述

在删除时会提示 Delete all breakpoints? (y or n), 选择 yes(y) 即可.

3.13 d n

删除断点 n, n 为断点的 Num, 每次调试的断点 Num 都是连续的, 在演示 delete breakpoints 时, 打了两个断点在 18, 19 行, 而它们的 Num 按顺序就是 1, 2, 当将它们都删除后, 再次打断点时, 断点的 Num 不会因为目前没有任何断点而重新从 1 开始编号, 而是会接着往下编号, 当退出此次调试, 重新开始另一次调试时, Num 会刷新, 从 1 开始编号.
在这里插入图片描述

3.14 disable/enable breakpoints

停用/启用所有断点.
在这里插入图片描述
Enb 表示断点的使能状态, y(yes) 表示启用, n(no) 表示停用, 默认都是 y, 关于断点的停用就相当于它不起作用, 即当它不存在, 通过其他指令也跳不到它.

停用所有断点:
在这里插入图片描述
启用所有断点:
在这里插入图片描述

3.15 disable/enable n

停用/启用断点 n.
在这里插入图片描述

3.16 info b

查看目前所打的所有断点的信息.
在这里插入图片描述

3.17 display 变量名/undisplay 编号

display 变量名: 常显示变量的值, 弥补了 p 变量名只显示一次的缺陷, 每次执行新的语句, 都会显示跟踪显示变量的值.
在这里插入图片描述

undisplay 编号: 取消变量的跟踪常显示, 需要注意的是, 和 display 不同, 取消变量的跟踪不是输入其变量名, 而是输入其 display 后获得的编号.
在这里插入图片描述

3.18 until n

执行完当前行和 n 行之间的内容, 跳到 n 行.
在这里插入图片描述

3.19 bt

查看函数调用栈.
在这里插入图片描述

3.20 ctrl + d/quit

退出调试.
在这里插入图片描述
输入 y 退出.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/2670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

复习python函数

复习python函数 1.对函数的理解函数的传递方式返回值 return可通过help()函数查看函数说明作用域 2.不定长参数3.递归4.高阶函数将函数作为参数传递将函数作为返回值返回 5.匿名函数6.装饰器 1.对函数的理解 函数可以用来保存一些可执行的代码&#xff0c;并且可以在需要时&am…

如何给word中的拼音加声调?分享3个方法

一&#xff0c;前言 在Word文档中标注拼音声调&#xff0c;是许多人在处理中文文档时经常需要面对的问题。对于不熟悉拼音的人来说&#xff0c;这可能会是一个挑战。但是&#xff0c;通过掌握一些简单的步骤和技巧&#xff0c;我们可以轻松地在Word文档中标注拼音声调。 二&a…

wsl2 中docker安装完毕后无法正常启动

wsl2 中docker安装完毕后无法正常启动 1、背景2、目标3、环境4、原因4、操作5.1、查看配置5.2、 切换配置5.3、启动docker5.4、验证docker 1、背景 在win10中安装wsl2体验linux操作系统&#xff0c;按照docker官网步骤安装&#xff0c;安装完毕后面提示 $ docker ps Cannot co…

云计算中的过度授权:安全隐患与应对策略

云计算凭借其弹性、可扩展等优势&#xff0c;已经成为诸多企业组织拓展业务的重要基础设施之一。然而&#xff0c;与传统IT架构相比&#xff0c;云计算环境的安全管理也面临着新的挑战。过度授权 (Overprivileging) 便是云安全领域亟待解决的主要问题之一&#xff0c;本文将带领…

为什么我的 Mac 运行缓慢以及如何使用CleanMyMac X修复它

近些年伴随着苹果生态的蓬勃发展&#xff0c;越来越多的用户开始尝试接触Mac电脑。然而很多人上手Mac后会发现&#xff0c;它的使用逻辑与Windows存在很多不同&#xff0c;而且随着使用时间的增加&#xff0c;一些奇奇怪怪的文件也会占据有限的磁盘空间&#xff0c;进而影响使用…

jasypt组件死锁bug案例分享

事故描述 1、上午9.55发布了一个Apollo动态配置参数&#xff1b; 2、片刻后&#xff0c;服务器接口开始出现大量的超时告警&#xff0c;似乎是某资源被耗尽不足分配&#xff1b; 3、正值业务请求高峰的上午十点&#xff08;平台上午10点会有一些活动会拉一波用户流量&#x…

HTML表单(详解网页表单如何实现)

目录 一、表单介绍 1.概念 二、表单用法 1.HTML表单 2.HTML 表单 - 输入元素 2.1.文本域&#xff08;Text Fields&#xff09; 2.2.密码字段 2.3.单选按钮&#xff08;Radio Buttons&#xff09; 2.4.复选框&#xff08;Checkboxes&#xff09; 2.5.提交按钮(Submit)…

人人都是开发者的时代,学编程还有用吗?

欢迎大家在 GitHub 上 Star 我们&#xff1a; 分布式全链路因果学习系统 OpenASCE: https://github.com/Open-All-Scale-Causal-Engine/OpenASCE 大模型驱动的知识图谱 OpenSPG: https://github.com/OpenSPG/openspg 大规模图学习系统 OpenAGL: https://github.com/TuGraph-…

检查*.bib参考文献是否重复

安装bibtexparser pip install bibtexparser 代码 import bibtexparser from difflib import SequenceMatcherdef parse_bib_file(filename):with open(filename, r, encodingutf-8) as bibfile:bib_database bibtexparser.load(bibfile)return bib_database.entriesdef fi…

【电控笔记5.10】Luenberger估测器

Luenberger估测计 单积分器:pi控制器的补偿 双积分器:使用pid控制器的补偿 除了受控厂跟传感器,其他都在mcu 去掉Rs就是一个PLL锁相环 带宽比PLL更大

齐护K210系列教程(九)_## 播放音频文件wav

播放音频文件wav 播放音频只支持带喇叭的型号&#xff1a;AIstart_掌机、AIstart_Mini AIstart可以播放SD卡中的wav音频文件&#xff0c;在编写程序前请将文件准备好存放到SD卡内。 注&#xff1a;播放wav格式音频&#xff1a;wav格式的音频频率不能超过16KHZ。 1&#xff0…

ui生成代码详细教程

被askmanyai的图生代码技术秀到了&#xff01;前端开发效率&#xff0c;提升到秒级 完全吊打了阿里的图生代码技术&#xff01; 上传一张网站图片或者UI稿&#xff0c;然后用askmanyai生成实现这个网站的代码的教程来啦&#xff01; 在askmanyai的中文网站上一分钟就能实现&…

simulink使用俩种方式封装(mask)画板/子系统的步骤

文章目录 创建子系统创建封装编制封装以参数控件方式封装以代码方式封装 添加约束效果 对封装概念不熟的可以看simulink封装概述&#xff0c;这是我简化的。我还是推荐看官方帮助文档 创建子系统 搭建一个简易的加法模型 &#xff0c;创建子系统 创建封装 右键-》封装-》创建封…

spring @value @configurationProperties比较

今天项目中需要使用数组的方式 来加载一批 配置 yml: xxxx: - xxxxx - xsssss javaBean Value("${xxxxx.xxxxx}") private List<String> xxxs; 启动时候报错&#xff0c;无法加载&#xff0c;TM试验了1个小时&#xff0c;我一开始想到是格式的问题&#x…

VirtualFlow亮相核反应堆技术全国重点实验室2024学术年会

为加强先进核能技术领域科技创新与应用&#xff0c;核反应堆技术全国重点实验室及先进核能技术全国重点实验室2024年学术年会在四川成都启幕&#xff0c;9名院士和近百家科研院所、高校和企业等近700名专家学者齐聚一堂&#xff0c;聚焦和探讨核反应堆及先进核能重大基础理论和…

震惊!小红书矩阵账号管理-批量发布笔记

“小红书引流软件矩阵工具-笔记批量发” 昨天&#xff0c;有个粉丝急匆匆地来找我&#xff0c;一脸焦急地说&#xff1a;“大佬&#xff0c;我现在运营着好几个小红书账号&#xff0c;每天都要发布内容&#xff0c;可把我忙坏了&#xff0c;有没有什么高效的管理方法啊&#xf…

【学习笔记二十五】EWM PPF自动WT后台配置和前台展示

一、概述 SAP EWM(Extended Warehouse Management)模块中的PPF(Post Processing Framework)是一个用于执行通用功能和流程的工具。PPF为SAP EWM提供了一个统一的接口,用于触发各种动作,例如打印托盘标签、交货单、拣选票或发送消息和传真。这些动作在特定条件满足时生成,…

电力作业平台车必备:防倾倒预警装置,智能守护你的工作

引言 在电力作业中&#xff0c;平台车作为一种重要的高空作业设备&#xff0c;广泛应用于线路检修、设备维护等工作场景。然而&#xff0c;平台车在高空作业过程中存在的倾倒风险&#xff0c;一直是困扰作业人员的难题。为了有效预防此类事故的发生&#xff0c;防倾倒预警装置…

电子温度计不准需要怎么处理?

电子温度计不准需要怎么处理&#xff1f; 首选将温度计完全浸入温度为0℃左右的水中&#xff0c;使温度计指示值与0℃相等&#xff0c;拿出测量待测物的温度。其次将温度计完全浸入温度为100℃左右的水中&#xff0c;使温度计指示值与100℃相等&#xff0c;拿出测量待测物的温…

男生一般穿什么裤子好看?五大爆款男装精选测评!

男生裤子要怎么选才能找到适合自己的裤子呢&#xff1f;这肯定是大家选裤子时经常出现的一个疑问了&#xff0c;现在的市面上虽然款式风格非常多&#xff0c;但是由于品牌鱼龙混杂的原因&#xff0c;不同的裤子质量也参差不齐。为了帮助各位男同胞能选到适合自己的裤子&#xf…