GDB调试入门笔记

文章目录

  • What?
  • Why
  • How
    • 安装GDB
      • 安装命令
      • 查看是否安装成功
      • 调试简单的程序
        • 预备一个程序
        • 调试
  • 使用
    • break
    • info
    • list
    • next
    • print
    • step
    • 一些小技巧
      • 在`gdb`前+`shell`
      • 日志功能
      • watch point| catch point
  • 调试core
  • 调试一个运行的程序

What?

GDB是什么?
全称GNU symbolic debugger
百度百科的解释:

程序调试工具
UNIX及UNIX-like下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。所谓“尺有所短,寸有所长”就是这个道理。

GDB支持的语言

  1. C/C++
  2. Assembly
  3. Go
  4. Pascal
  5. Rust

Why

The purpose of a debugger such as GDB is to allow you to see what is
going on “inside” another program while it executes – or what
another program was doing at the moment it crashed.

这个是gdb官方文档里面的内容给出了为什么需要gdb


How

安装GDB

安装命令

apt-get install gdb

查看是否安装成功

gdb --version

下面是安装成功的信息显示
image

调试简单的程序

预备一个程序

image
编译这个程序生成可执行文件
image
image

调试

如果我们想调试一个程序我们在用gcc编译的时候需要加上参数-g

gcc -g test.c

如何进入调试界面呢?
使用命令

gdb a.out

这里所有的a.out都是用gcc带参数生成的可执行文件

第一个命令
执行

r

image
退出gdb

quit

image

使用

break

break
简写b
可以在函数处打断点,也可以在某一行打断点

b main

在某一行打断点

b 7

info

info 是用来查看信息的
info b
查看自己的打的断点

image

list

查看源代码
list
查看我们写的代码

list

image

next

next;往下走一行
简写:n

print

我们打断点的目的是让程序在,某一步停止,便于我们查看信息。
如何查看信息呢?
使用print
简写p

p arr[0]

image

image

除了可以打印变量的值之外,我们还可以打印变量的地址

p &arr[0]

image
一个int占4个字节

step

进入某个函数
简写s
image

一些小技巧

gdb前+shell

image

日志功能

set logging on

watch point| catch point

调试core

等到用到时候再学吧

调试一个运行的程序

等到用到时候再学吧

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

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

相关文章

1、MQ_介绍、优缺点、类型等

MQ介绍 1. MQ概述 MQ(Message Queue):消息队列,是基础数据结构中FIFO(first in first out)的一种数据结构。一般用来解决流量削峰、应用解耦、异步处理等问题,实现高性能,高可用&a…

鸿蒙实战开发:数据交互【RPC连接】

概述 本示例展示了同一设备中前后台的数据交互,用户前台选择相应的商品与数目,后台计算出结果,回传给前台展示。 样例展示 基础信息 RPC连接 介绍 本示例使用[ohos.rpc]相关接口,实现了一个前台选择商品和数目,后台…

【大数据】-- 创建 Paimon 外部表

如今,在数据湖三剑客(delta lake、hudi、iceberg)之上,又新出一派: apache paimon。我们恰好在工作中遇到,以下介绍在 dataworks 上,使用 maxcompute odps sql 创建 apache paimon 外部表的一些…

Claude3深夜震撼发布!模型特点分析,附使用教程

Claude3深夜震撼发布!模型特点分析,附使用教程 引言 最新发布的Claude3引起了广泛关注,这次发布一举推出了三个不同类型的模型,分别是Claude 3 Haiku、Claude 3 Sonnet和Claude 3 Opus。每个模型都具有独特的特点和能力&#xff…

深色系可视化界面看腻了,来点浅色系?安排,20页来了。

只要不放在大屏上展示,贝格前端工场还是非常推崇浅色系的可视化界面,把它作为配色的首选 。浅色系可视化界面具有以下几个优势: 清晰明了 浅色系界面通常使用明亮的颜色,如白色、浅灰色等,使界面元素更加清晰可见。这…

Python 开发图形界面程序

用 Python 语言开发图形界面的程序,有2种选择: Tkinter 基于Tk的Python库,这是Python官方采用的标准库,优点是作为Python标准库、稳定、发布程序较小,缺点是控件相对较少。 PySide2/PySide6 基于Qt 的Python库&#x…

机器学习-面经(part7、无监督学习)

机器学习面经系列的其他部分如下所示: 机器学习-面经(part1) 机器学习-面经(part2)-交叉验证、超参数优化、评价指标等内容 机器学习-面经(part3)-正则化、特征工程面试问题与解答合集机器学习-面经(part4)-决策树共5000字的面试问题与解答…

【ArcGIS超级工具】基于ArcPy的矢量数据批量自动化入库工具

最近,有很多做规划的朋友私信我,想让我帮忙开发一款ArcGIS自动化脚本工具,实现点、线、面的自动化入库操作,帮他们在平时的内业数据处理工作中减少机械式重复性的工作,提高工作效率。为此,我详细了解了下目…

这本书太好了!150页就能让你上手大模型应用开发

如果问个问题:有哪些产品曾经创造了伟大的奇迹?ChatGPT 应该会当之无愧入选。仅仅发布 5 天,ChatGPT 就吸引了 100 万用户——当然,数据不是关键,关键是其背后的技术开启了新的 AI 狂潮,成为技术变革的点火…

数据结构与算法学习【算法思想之二分法基础】

文章目录 数据结构与算法学习【算法思想之二分查找基础】本文学习目标或巩固的知识点 最基础的二分查找🟢通过题目可知题解结果验证 数据结构与算法学习【算法思想之二分查找基础】 本文学习目标或巩固的知识点 学习二分法类题目 巩固基础的二分法 提前说明&#…

Jmeter之Ramp-up Period(in seconds)

1、Ramp-up Period概念 (in seconds)–并发用户启动周期,告知JMeter 要在多长时间内启动全部Vuser用户。 2、为什么需要有“ramp-up period”,立即启动所有的并发用户数不是更好? 对于绝大多数的网址或应用&#xf…

【数据结构】堆的TopK问题

大家好,我是苏貝,本篇博客带大家了解堆的TopK问题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 一. 前言二. TopK三. 代码 一. 前言 TOP-K问题:即求数据结合中前K个最大的元…

【Docker】技术架构演变

【Docker】技术架构演变 目录 【Docker】技术架构演变架构中的概念架构演进单机架构相关软件 应用数据分离架构应用服务集群架构相关软件 读写分离/主从分离架构相关软件 引入缓存——冷热分离架构相关软件 垂直分库(分布式数据库架构)相关软件 业务拆分…

Day14:单元测试、Junit单元测试框架、反射、注解

单元测试 针对最小的功能单元(方法)进行正确性测试编写正规的单元测试框架传统的无法执行自动化测试,且无法得到测试报告 Junit单元测试框架 Junit的作用: 具体步骤 测试类取名:原类名Test(大驼峰&#…

蓝桥杯备战刷题four(自用)

1.砝码称重 #include <iostream> #include <vector> using namespace std; const int N110; const int M100010; int w[N]; int n; int f[N][M]; int m; int ans; //f[i][j]表示到第i个砝码进行放置时的称得的重量为j的方案数 int main() {cin>>n;for(int i1…

DbSchema导出HTML/PDF版表结构

一、连接数据库 登录成功默认显示当前用户的所有资源&#xff08;表、视图、序列、方法、触发器等&#xff09;&#xff0c;如果不操作将导出此用户的全部信息。 至此连接数据库完成 二、表结构导出 本次不想给用户全部导出&#xff0c;只给导出几张&#xff0c;选择需要…

分享7款前端动画特效(附效果图及在线演示)

分享7款好玩的前端动画特效 其中有CSS动画、SVG动画、js小游戏等等 下方效果图可能不是特别的生动 那么你可以点击在线预览进行查看相应的动画特效 同时也是可以下载该资源的 canvas彩色画树特效 基于canvas实现的画树特效 同时还可选择树枝的初始数目进行彩色树生成 以下效果…

企业对接Walmart平台API流程 On-request Reports API(二)

对接On-request Reports API 1、对接指南1.1 报告生成时间1.2 报告保留期1.3 请求限制1.4 报告请求工作流如何申请报告第 1 步&#xff1a;申请取消报告第 2 步&#xff1a;获取报表可用性状态第 3 步&#xff1a;下载报告 URL 2、代码实现2.1、获取访问API的token2.2、构建公共…

【教育部白名单赛事】C语言编程题解析--软件编程邀请赛(决赛)

文章目录 1、保留12位小数的浮点数2、气温统计3.大写字母的判断4、【递归】母鸡的故事5、小白免再排队 1、保留12位小数的浮点数 输入一个双精度浮点数&#xff0c;保留12位小数&#xff0c;输出这个浮点数。 时间限制&#xff1a;1000 内存限制&#xff1a;65536 【输入】 只…

【DPDK】基于dpdk实现用户态UDP网络协议栈

文章目录 一.背景及导言二.协议栈架构设计1. 数据包接收和发送引擎2. 协议解析3. 数据包处理逻辑 三.网络函数编写1.socket2.bind3.recvfrom4.sendto5.close 四.总结 一.背景及导言 在当今数字化的世界中&#xff0c;网络通信的高性能和低延迟对于许多应用至关重要。而用户态网…