Linux:调试器-gdb/cgdb

文章目录

    • 一、编译成debug
        • 1、-g 选项
    • 二、gdb调试命令
        • 1、在CentOS系统下检查安装gdb
        • 2、进入gdb模式
        • 3、quit 退出gdb
        • 4、list (简写 l)显示文件内容
        • 5、b 打断点
        • 6、 r / run运行程序
        • 7、c 让程序直接运行完
    • 三、cgdb
        • 1、info b查看打的所有断点
        • 2、d 删除断点
        • 3、n / next 逐过程
        • 4、s/step 逐语句
    • 四、调试技巧
        • 1、watch 修改时显示
        • 2、 set var 调试时修改值
        • 3、条件断点
        • 4、condition给已存在的断点添加条件

一、编译成debug

Linux 下我们编译好的代码,无法直接调试!
gcc/g++ 默认的工作模式是release模式

1、-g 选项

在编译时加上-g 选项
在这里插入图片描述
-g后生成的.o 文件被链接后的可执行程序占用的空间会变大

查看调试信息:
在这里插入图片描述
-g选项,让最后形成的可执行程序,添加调试信息—debug模式!

二、gdb调试命令

1、在CentOS系统下检查安装gdb

使用gdb --version命令来检查
在这里插入图片描述
显示没有找到,就说明没有安装

使用 sudo yum install gdb 来安装
在这里插入图片描述

2、进入gdb模式

gdb + 链接好的可执行程序文件名:进入gdb模式
在这里插入图片描述

3、quit 退出gdb

quit:退出
在这里插入图片描述

4、list (简写 l)显示文件内容

在这里插入图片描述
指定 行号从指定行号开始显示
在这里插入图片描述
从第1行开始打印内容,然后直接回车把文件内容全部打印出来

5、b 打断点

b 后面跟行好在指定行打断点
在这里插入图片描述

6、 r / run运行程序

在这里插入图片描述
会在断点处停下来

7、c 让程序直接运行完

在这里插入图片描述

三、cgdb

在这里插入图片描述
cgdb跟gdb的使用方法一样,但cgdb更好观察代码,会分屏显示代码
在这里插入图片描述
在这里插入图片描述

1、info b查看打的所有断点

在这里插入图片描述
断点编号 ------ 断点类型---------------------------是否使能----断点地址--------------------------------打的什么断点

2、d 删除断点

删断点只能根据断点编号来删
在这里插入图片描述
gdb不退出断点编号依次递增

3、n / next 逐过程
4、s/step 逐语句

四、调试技巧

1、watch 修改时显示

执⾏时监视⼀个表达式(如变量)的值。如果监视的表达式在程序运⾏期间的值发⽣变化,GDB会暂停程序的执⾏,并通知使⽤者

2、 set var 调试时修改值
3、条件断点

在这里插入图片描述

4、condition给已存在的断点添加条件

在这里插入图片描述

后面跟断点编号

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构 -- 二叉搜索树

二叉搜索树 概念 二叉搜索树又称为二叉排序树,它或为空树,或为具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于等于根节点的值。若它的右子树不为空,则右子树上所有节点的值都大于等于根节…

VScode使用Batch Runner插件在终端运行bat文件

搜索并安装插件Batch Runner 创建测试文件 echo off echo "Hello world"按F5运行

4.STM32之通信接口《精讲》之USART通信---实验串口发送程序

本节将进行实战,基础了解请查看第1,2,3节(Whappy) 开始背!! USART ---》全双工 异步/同步 点对点 C语言基础printf用法,这节将用到printf的重定向,来打印到串口助手上…

特征融合篇 | CARAFE:轻量级通用上采样算子,可提高目标检测性能

前言:Hello大家好,我是小哥谈。CARAFE算子的主要特点是在保持轻量级功能的同时,能够提供比其他上采样算子更好的性能。它通过少量的参数和计算量来实现高效的图像上采样。CARAFE算子能够根据像素之间的关系进行自适应的上采样,从而更好地保留图像的细节和语义信息。🌈 …

游戏引擎学习第18天

clang-format 相关的配置可以参考下面 .clang-format 是用来配置代码格式化规则的文件,主要用于 Clang-Format 工具。以下是 .clang-format 文件中的一些常用设置: 1. 基础设置 Language: Cpp # 指定语言 (C, C, Java, JavaScript, etc…

递归(3)----力扣40组合数2,力扣473火柴拼正方形

给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 示例 1: 输入: candidates [10,1,2,7,6,1…

SpringBoot Data Redis连接Redis-Cluster集群

使用SpringBoot Data Redis无法连接Redis-Cluster集群 最近在研究系统高并发下的缓存架构,因此自己在自己买的云服务器上搭建好Redis 5.0 版本的集群后,使用springboot的 RedisTemplate连接是发现总是访问不到集群节点。上网百度了发现没有好的解决办法&…

【插件】重复执行 pytest-repeat

安装 pip3 install pytest-repeat 用法 1.命令行 pytest --count num pytest --count 32.装饰器 pytest.mark.repeat(num) #num运行次数 pytest.mark.repeat(5)#执行结果如下:

强制放大缩小(适用于所有ctrl-,ctrl+)

以下操作: 使用资源管理器打开启动文件夹: 按下 Win R 键打开“运行”对话框。输入 shell:startup,然后按下 Enter。这应该会打开启动文件夹。 手动定位启动文件夹: 打开资源管理器并导航到以下路径: C:\Users\admin…

web前端开发网页--css样式的使用

1、css层叠性 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>css层叠性</title><style type"text/css">p{font-size: 12px;font-family: "微软雅黑";}.special{font-size: 24px;}#one{c…

idea 通过git撤销commit但未push的操作

1、undo commit 适用情况&#xff1a;代码修改完了&#xff0c;已经Commit了&#xff0c;但是还未push&#xff0c;然后发现还有地方需要修改不想提交本次记录了。这时可以进行Undo Commit&#xff0c;修改后再重新Commit。注意&#xff1a;如果已经进行了Push&#xff0c;线上…

『VUE』30. 生命周期的介绍(详细图文注释)

目录 生命周期生命周期的8阶段生命周期小例子总结 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 生命周期 每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比如设置好数据侦听&#xff0c;编译模板&#xf…

远程jupyter lab的配置

打开虚拟环境 conda activate test 在环境下安装ipykernel软件包&#xff0c;这个软件包允许jupyter notebookl使用特定环境的python版本。 conda install ipykernel 将该环境添加到Jupyter Notebook中 python -m ipykernel install --user --nametest --display-name&quo…

C指针之舞——指针探秘之旅

❤博客主页&#xff1a;折枝寄北-CSDN博客 ❤专栏内容&#xff1a;C语言学习专栏https://blog.csdn.net/2303_80170533/category_12794764.html?spm1001.2014.3001.5482 指针基础学习 在之前的博客文章中&#xff0c;简单总结了指针的基础概念 我们知道了指针的概念&#xf…

MATLAB绘制克莱因瓶

MATLAB绘制克莱因瓶 clc;close all;clear all;warning off;% clear all rand(seed, 100); randn(seed, 100); format long g;% Parameters u_range linspace(0, 2*pi, 100); v_range linspace(0, pi, 50); [U, V] meshgrid(u_range, v_range);% Parametric equations for t…

Spring Cloud微服务下如何配置I8n

什么是I8n 国际化&#xff08;I18n&#xff09;指的是设计和开发产品的过程&#xff0c;使得它们能够适应多种语言和文化环境&#xff0c;而不需要进行大量的代码更改。这通常涉及到创建一个基础版本的产品&#xff0c;然后通过配置和资源文件来添加对不同语言和地区的支持。 这…

将分割标签数据从JSON格式转换为YOLOv8的TXT格式

AnyLabeling是一款突破性的开源图像标注工具。 一、主要功能与特点 融合传统标注工具优点&#xff1a;AnyLabeling结合了LabelImg和Labelme等传统标注软件的优点&#xff0c;提供了多边形、矩形、圆形、线条和点等多种标注形式&#xff0c;满足不同场景的需求。强大的AI自动标…

【graphics】图形绘制 C++

众所周知&#xff0c;周知所众&#xff0c;图形绘制对于竞赛学僧毫无用处&#xff0c;所以这个文章&#xff0c;专门对相关人员教学&#xff08;成长中的码农、高中僧、大学僧&#xff09;。 他人经验教学参考https://blog.csdn.net/qq_46107892/article/details/133386358?o…

Javaweb梳理17——HTMLCSS简介

Javaweb梳理17——HTML&CSS简介 17 HTML&CSS简介17.1 HTML介绍17.2 快速入门17.3 基础标签17.3 .1 标题标签17.3.2 hr标签17.3.3 字体标签17.3.4 换行17.3.8 案例17.3.9 图片、音频、视频标签17.3.10 超链接标签17.3.11 列表标签17.3.12 表格标签17.3.11 布局标签17.3.…

637. 二叉树的层平均值【 力扣(LeetCode) 】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 637. 二叉树的层平均值 一、题目描述 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 二、测试用例 示例 1&a…