gdb/cgdb:调试器

介绍

安装

检查软件包列表版本

安装

gdb安装

cgdb安装

验证安装

使用

注意事项

常用命令

cgdb中

gdb/cgdb中

1.读取可执行程序格式

2.列出代码

3.打断点

4.删除断点

5.查看断点

6.禁用断点

7.查看信息

8.调试

小知识


介绍

gdb(GUN Debugger):是一个命令行调试工具,主要用于C/C++语言编写的程序。

cgdb:gdb的增强版,提供了一个友好的用户界面,上部显示源代码,下部为gdb命令行。

安装

CentOS 中使用yum,Ubuntu中使用apt。   关于yum和apt的介绍,在之前的文章中有。

检查软件包列表版本

首先,确保软件包列表是最新的,

sudo yum/apt update

安装

gdb安装

sudo yum/apt install gdb

对于CentOS 8及以上版本

sudo dnf install gdb

cgdb安装

对于Ubuntu,直接安装cgdb即可

sudo apt install cgdb

CentOS默认的软件仓库中没有cgbd,安装需要进行源码编译安装

1.安装依赖

sudo yum install git automake autoconf flex texinfo ncurses-devel

如果是CentOS 8及以上版本

sudo dnf install git automake autoconf flex texinfo ncurses-devel

2.下载cgdb源码

git clone https://github.com/cgdb/cgdb.git

cd cgdb

3.编译和安装

sh autogen.sh

./configure

make

sudo make install

验证安装

gdb/cgdb --version

使用

注意事项

1.可执行的二进制文件才能进行调试

2.只有带调试信息的可执行二进制文件才可以调试,gcc/g++默认以无调试信息的版本发布,使用-g选项可以发布debug版本的可执行程序。

gcc/g++ 源文件 -g 

3.gdb/cgdb 文件名 :进入调试,但只是进入调试,并不会运行程序。

常用命令

cgdb中

:break:在光标所在行设置断点。

/:在源代码窗口中搜索文本。

i:切换到 GDB 命令行窗口。

ESC:切换到源代码窗口。

gdb/cgdb中
1.读取可执行程序格式

readelf -S 文件名

2.列出代码

l/list :显示从文件开始位置的代码,继续输入l/list或者enter会继续向下显示。

l/list 行号:显示指定行号附近的代码

l/list 函数名:显示指定函数的代码

l/list 起始行号,结束行号:显示指定区间代码

l/list 文件名:行号  or  l/list 文件名:函数名     :GDB 会显示指定文件中特定行号或函数的代码。

3.打断点

断点按编号来操作

b 行号

在指定行打断点

b 文件名:函数名/行号

在指定位置打断点


b 行号 if 条件表达式

在指定行打条件断点

condition 断点编号 条件表达式

更改条件断点条件,或者给普通断点加条件

4.删除断点

d 断点编号 

删除断点

 

d breakpoints 

删除所有断点

5.查看断点

info b 

查看断点信息

6.禁用断点

disable 断点编号

禁用指定断点

disable breakpoints 

禁用所有断点


enable 断点标号

启用指定断点

enable breakpoints

启用所有断点

7.查看信息

info b

查看断点信息

info i

查看当前正在debug的程序信息

info local

显示当前函数或作用域中所有局部变量的信息

8.调试

r(run)

开始调试

注:就是启动程序开始运行,如果无断点,会直接运行至程序结束。

n(next)

逐过程调试,不进入函数

s(step)

逐语句调试,进入函数

until 行号

执行到指定行

 

c(continue) 

跳到下一个断点,如果无断点,结束运行

 

finish 

执行到当前函数返回停止


p 变量

查看变量值

p &变量

查看变量地址

display 变量/&变量

设置为常显示

undisplay 编号(display生成的常显示的变量的编号)

取消常显示

 

bt(backtrace)

查看调用堆栈

watch 变量

如果调试中watch变化会通知

set var 变量 = 值

更改此次调试中变量的值,不会修改代码

小知识

1.回车:将光标移动到当前行的开头

2.对于rand这个函数,如果将srand这个设置随机数种子的函数注释掉,只要不重新编译,再次运行产生的随机值不变

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

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

相关文章

138. 随机链表的复制

题目: 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节…

网络HTTPS协议

Https HTTPS(Hypertext Transfer Protocol Secure)是 HTTP 协议的加密版本,它使用 SSL/TLS 协议来加密客户端和服务器之间的通信。具体来说: • 加密通信:在用户请求访问一个 HTTPS 网站时,客户端&#x…

19921 多重背包

19921 多重背包 ⭐️难度:中等 🌟考点:动态规划、背包问题 📖 📚 import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {static int N …

C/C++蓝桥杯算法真题打卡(Day5)

一、P8772 [蓝桥杯 2022 省 A] 求和 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> // 包含标准库中的所有头文件&#xff0c;方便编程 using namespace std; // 使用标准命名空间&#xff0c;避免每次调用标准库函数时都要加 std::int main() {int n; …

【大模型基础_毛玉仁】3.5 Prompt相关应用

目录 3.5 相关应用3.5.1 基于大语言模型的Agent3.5.2 数据合成3.5.3 Text-to-SQL3.5.4 GPTs 3.5 相关应用 Prompt工程应用广泛&#xff0c;能提升大语言模型处理基础及复杂任务的能力&#xff0c;在构建Agent、数据合成、Text-to-SQL转换和设计个性化GPTs等方面不可或缺。 . …

主成分分析PCA与奇异值分解SVD

线性代数 SVD 奇异值分解&#xff08;Singular Value Decomposition&#xff0c;简称 SVD&#xff09;是线性代数中的一种基本工具&#xff0c;它将任意一个 (m * n) 矩阵 (A) 分解成三个简单矩阵的乘积&#xff0c;即 其中&#xff1a; (U) 是一个 (m*m) 的正交&#xff08…

自主代理的摩尔定律:AI 的指数级革命

图像由 Gemini 生成 前言&#xff1a;AI 正在以超过摩尔定律的速度迅速提升其自主工作能力&#xff0c;研究显示&#xff0c;AI 能够可靠完成的任务时长正以每 7 个月翻一倍的速度增长。这种指数级的发展趋势意味着&#xff0c;AI 不再只是应对简单问答或短任务的工具&#xff…

气膜文化馆:打造沉浸式文娱新空间—轻空间

演唱会、展览、音乐剧……都能办&#xff1f; 当然&#xff01;气膜文化馆不仅适用于体育赛事&#xff0c;在文化娱乐方面同样大放异彩&#xff01; 声学优化&#xff0c;打造极致听觉体验 气膜文化馆采用专业声学设计&#xff0c;避免传统场馆的回声干扰&#xff0c;提供更清…

【数据标准】数据标准化框架体系-对象类数据标准

导读&#xff1a;对象类数据标准化框架通过统一数据定义、分类和标记&#xff0c;解决数据孤岛与不一致问题&#xff0c;支撑数据分析、AI应用与合规需求。企业需结合自身业务特性&#xff0c;灵活选择国际标准&#xff08;如ISO&#xff09;、行业规范或自建体系&#xff0c;并…

【江协科技STM32】软件SPI读写W25Q64芯片(学习笔记)

SPI通信协议及S为5Q64简介&#xff1a;【STM32】SPI通信协议&W25Q64Flash存储器芯片&#xff08;学习笔记&#xff09;-CSDN博客 STM32与W25Q64模块接线&#xff1a; SPI初始化&#xff1a; 片选SS、始终SCK、MOSI都是主机输出引脚&#xff0c;输出引脚配置为推挽输出&…

C 语 言 --- 扫 雷 游 戏(初 阶 版)

C 语 言 --- 扫 雷 游 戏 初 阶 版 代 码 全 貌 与 功 能 介 绍扫雷游戏的功能说明游 戏 效 果 展 示游 戏 代 码 详 解game.htest.cgame.c 总结 &#x1f4bb;作 者 简 介&#xff1a;曾 与 你 一 样 迷 茫&#xff0c;现 以 经 验 助 你 入 门 C 语 言 &#x1f4a1;个 人 主…

数据库基础知识

目录 一、什么是数据库&#xff1f; 二、基本使用方法 &#xff08;1&#xff09;启动服务器进程 &#xff08;2&#xff09;连接服务器 &#xff08;3&#xff09;基本sql语句 三、MySQL架构 四、SQL语句分类 五、存储引擎是什么 一、什么是数据库&#xff1f; 数据库…

在线生成自定义二维码

在线生成自定义二维码 1. 引言 二维码已成为现代互联网的重要工具&#xff0c;广泛应用于链接分享、支付、身份认证等场景。然而&#xff0c;很多在线二维码生成工具功能有限&#xff0c;难以满足个性化需求。如果你需要 自定义颜色、Logo、不同形状的二维码&#xff0c;那么…

DeepSeek处理多模态数据的技术要点和实现方式

DeepSeek具备处理多模态数据的能力&#xff0c;以下是相关技术要点和实现方式。 1. ‌多模态模型架构‌ ‌单流/双流网络‌&#xff1a;通过将文本和图像输入统一编码器&#xff08;单流&#xff09;或分别编码后交互&#xff08;双流&#xff09;实现模态融合‌。‌预训练模…

系统架构设计知识体系总结

1.技术选型 1.什么是技术选型&#xff1f; 技术选型是指评估和选择在项目或系统开发中使用的最合适的技术和工具的过程。这涉及考虑基于其能力、特性、与项目需求的兼容性、可扩展性、性能、维护和其他因素的各种可用选项。技术选型的目标是确定与项目目标相符合、能够有效解…

数智读书笔记系列022《算力网络-云网融合2.0时代的网络架构与关键技术》读书笔记

一、书籍核心价值与定位 1.1 书籍概述:中国联通研究院的权威之作 《算力网络 —— 云网融合 2.0 时代的网络架构与关键技术》由中国联通研究院算力网络攻关团队精心撰写,是业界首部系统性探讨云网融合 2.0 与算力网络的专著。在云网融合从 1.0 迈向 2.0 的关键节点,本书的…

知识图谱中NLP新技术

知识图谱与自然语言处理&#xff08;NLP&#xff09;的结合是当前人工智能领域的前沿方向&#xff0c;其技术发展呈现多维度融合与场景深化的特点。以下从核心技术突破、应用场景创新及未来趋势三个层面&#xff0c;系统梳理知识图谱中NLP的最新进展&#xff1a; 一、核心技术突…

ASP.NET Web的 Razor Pages应用,配置热重载,解决.NET Core MVC 页面在更改后不刷新

Razor Pages应用&#xff0c;修改页面查看修改效果&#xff0c;如果没有热重载&#xff0c;改一句话跑一次&#xff0c;这个活就没法干了。 1、VS2022中的NuGet中安装RuntimeCompilation Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 需要配套你的.net sdk版本&#x…

DeepSeek(8):结合Kimi-PPT助手一键生成演示报告

1 生成内容 在Deepseek中生成内容&#xff1a; 帮我创建年度计划&#xff0c;描述《智能枕头》产品的如何在全国销售&#xff0c;计划切分到每个月。从而让我们的老板和团队对报告充满信息。输出的内容我需要放到ppt中进行展示。 使用Deepseek R1模型&#xff0c;如下&#x…

到底爱不爱我

L2-3 到底爱不爱我 古代少女有了心上人时&#xff0c;会悄悄折一条树枝&#xff0c;揪那枝上的叶子&#xff0c;揪一片叶子念一句“爱我”&#xff0c;再揪一片念一句“不爱我”…… 这样揪落最后一片叶子的时候&#xff0c;看看是停在“爱”还是“不爱”。 但聪明的慧娘一眼洞…