当前位置: 首页 > news >正文

【GDB】

GDB

  • 1. GDB调试器
    • 1.1 前言
    • 1.2 GDB编译程序
    • 1.3 启动GDB
    • 1.4 载入被调试程序
    • 1.5 查看源码
    • 1.6 运行程序
    • 1.7 断点设置
      • 1.7.1 通过行号设置断点
      • 1.7.2 通过函数名设置断点
      • 1.7.3 通过条件设置断点
      • 1.7.4 查看断点信息
      • 1.7.5 删除断点
    • 1.8 单步调试
    • 1.9
  • 2. GDB调试core文件
    • 2.1 设定core文件的最大值
    • 2.2 临时修改core文件的生成路径
      • 2.2.1 示例一:除数设为0
      • 2.2.2 示例二:这里scanf后的参数没有加&
    • 2.3
    • 2.4

1. GDB调试器

1.1 前言

GDB是GNU调试器(GNU Debugger)的缩写,是一种功能强大的调试工具,可以用于调试多种编程语言的程序,如C、C++、汇编等。GDB可以帮助程序员在程序运行时进行调试,包括查看变量的值、跟踪程序执行流程、设置断点等。
GDB支持多种操作系统,包括Linux、Unix、Windows等。

1.2 GDB编译程序

  • 文件编译
    g++ main.cpp -o main
  • 带有GDB debug功能,编译
    g++ -g main.cpp -o main
  • 查看可执行文件是否带有debug功能
    readelf -S main | grep debug
    在这里插入图片描述

1.3 启动GDB

在这里插入图片描述

1.4 载入被调试程序

在这里插入图片描述

1.5 查看源码

list / l [first, last](行号)
在这里插入图片描述

1.6 运行程序

run / r
在这里插入图片描述
若程序运行时需要参数,在run命令后加上参数即可.

1.7 断点设置

break / b 行号/函数名/条件

1.7.1 通过行号设置断点

在这里插入图片描述

1.7.2 通过函数名设置断点

在这里插入图片描述

1.7.3 通过条件设置断点

当n > 1时会在OddOrEven函数中停止执行
在这里插入图片描述
在这里插入图片描述

1.7.4 查看断点信息

info breakpoints
在这里插入图片描述

1.7.5 删除断点

delete breakpointNum
在这里插入图片描述

1.8 单步调试

1.9


2. GDB调试core文件

2.1 设定core文件的最大值

ulimit -c [n]
有参数n为设置,没有参数n为查看,若core文件最大值为0则不会生成coredump
在这里插入图片描述

2.2 临时修改core文件的生成路径

echo /root/achen/project/coredump/core.%e.%p> /proc/sys/kernel/core_pattern
%e为程序名,%p为进程id

2.2.1 示例一:除数设为0

在这里插入图片描述
编译后运行,并将除数设为0
提示核心已转储(coredump),查看coredump目录下,生成了core文件
在这里插入图片描述
使用GDB对core进行调试
core-file core文件
在这里插入图片描述
这里提示信号终止了程序,发成了arithmetic异常(由于除数为0)
查看函数的调用栈帧和层级关系
backtrace / bt
在这里插入图片描述
这里和上面core-file都有一串问号,原因是没加载符号表,解决方案为在core-file之前先载入被调试程序
在这里插入图片描述
调用bt命令
在这里插入图片描述
结果为函数调用的栈帧和层级关系,因为该程序中没有函数调用,所以只有显示main函数,且错误行数为第9行

2.2.2 示例二:这里scanf后的参数没有加&

在这里插入图片描述
这里scanf后的参数没有加&
编译后运行
在这里插入图片描述
发生coredump,查看coredump目录,生成了core文件
在这里插入图片描述
使用GDB进行调试
在这里插入图片描述
这里显示信号终止了服务,发生了段错误
查看栈帧和层级关系发现函数调用关系为main->scanf->_IO_vfscanf,函数错误为第6行

2.3

2.4

相关文章:

【GDB】

GDB 1. GDB调试器1.1 前言1.2 GDB编译程序1.3 启动GDB1.4 载入被调试程序1.5 查看源码1.6 运行程序1.7 断点设置1.7.1 通过行号设置断点1.7.2 通过函数名设置断点1.7.3 通过条件设置断点1.7.4 查看断点信息1.7.5 删除断点 1.8 单步调试1.9 2. GDB调试core文件2.1 设定core文件的…...

深入了解Java Duration类,对时间的精细操作

阅读建议 嗨,伙计!刷到这篇文章咱们就是有缘人,在阅读这篇文章前我有一些建议: 本篇文章大概6000多字,预计阅读时间长需要5分钟。本篇文章的实战性、理论性较强,是一篇质量分数较高的技术干货文章&#x…...

Python:核心知识点整理大全5-笔记

目录 2. 使用方法pop()删除元素 3. 弹出列表中任何位置处的元素 4. 根据值删除元素 3 章 列表简介 3.3 组织列表 3.3.1 使用方法 sort()对列表进行永久性排序 3.3.2 使用函数 sorted()对列表进行临时排序 3.3.3 倒着打印列表 3.3.4 确定列表的长度 3.5 小结 2. 使用方…...

预训练(pre-learning)、微调(fine-tuning)、迁移学习(transfer learning)

预训练(pre-learning) 搭建一个网络模型来完成一个特定的图像分类的任务。首先,你需要随机初始化参数,然后开始训练网络,不断调整参数,直到网络的损失越来越小。在训练的过程中,一开始初始化的…...

王道数据结构课后代码题 p149 第8—— 12(c语言代码实现)

目录 8.假设二叉树采用二叉链表存储结构存储,试设计一个算法,计算一棵给定二叉树的所有双分支结点个数。 9.设树B是一棵采用链式结构存储的二叉树,编写一个把树 B中所有结点的左、右子树进行交换的函数。 10.假设二叉树采用二叉链存储结构存储…...

Nginx服务优化以及防盗链

1. 隐藏版本号 以在 CentOS 中使用命令 curl -I http://192.168.66.10 显示响应报文首部信息。 查看版本号 curl -I http://192.168.66.10 1. 修改配置文件 vim /usr/local/nginx/conf/nginx.conf http {include mime.types;default_type application/octet-stream;…...

20231210 随机矩阵和M矩阵

1. 非负矩阵:矩阵元素均非负 定义 7.1.1 设 A ( a i j ) ∈ R m n \boldsymbol{A}\left(a_{i j}\right) \in \mathbb{R}^{m \times n} A(aij​)∈Rmn, 如果 a i j ⩾ 0 , i 1 , ⋯ , m ; j 1 , ⋯ , n , a_{i j} \geqslant 0, \quad i1, \cdots, m ; j1, \cd…...

Linux(centos)学习笔记(初学)

[rootlocalhost~]#:[用户名主机名 当前所在目录]#超级管理员标识 $普通用户的标识 Ctrlshift放大终端字体 Ctrl缩小终端字体 Tab可以补全命令 Ctrlshiftc/V复制粘贴 / :根目录,Linux系统起点 ls: #list列出目录的内容,通常用户查看…...

ECharts标题字体大小自适应变化

我们在做自适应Echarts的时候,字体大小在配置项里是如下配置的, title 标题组件,包含主标题和副标题。 以下是常用的对标题的设置: title:{//设置图表的标题text:"主标题",link:"baidu.com", //设置标题超链接target:"self",...

解决使用pnpm安装时Sharp模块报错的方法

在使用pnpm进行项目依赖安装的过程中,有时候会遇到Sharp模块报错的情况。Sharp是一个用于处理图像的Node.js模块,但它的安装可能会因为各种原因而失败,导致项目无法正常启动。本文将介绍这个问题的方法。 问题描述 解决方法 在命令行分别输…...

Redis 数据的持久化 RDB、AOF、RDB + AOF、No persistence 各自优缺点

文章目录 一、RDB (Redis Database)1.1 RDB 优势1.2 RDB 缺点1.3 RDB 如何工作1.4 RDB配置1.5 开启/关闭,RDB快照策略,save指令1.6 持久化硬盘文件,dbfilename指令1.7 持久化硬盘文件的存储地址,dir指令 二、AOF (Append Only Fil…...

回味童年经典游戏的项目

目录 1.超级玛丽2.坦克大战3.吃豆人游戏4.贪吃蛇游戏 1.超级玛丽 项目地址:超级马里奥游戏源码 在线试玩网址在资源描述中 在线试玩:http://martindrapeau.github.io/backbone-game-engine/super-mario-bros/index.html 主要语言:JavaScript…...

Electron[5] 渲染进程和主进程

1 进程 Electron里头的进程分为渲染进程和主进程。简单理解: main.js就是主进程每个页面就是渲染进程一个Electron应用仅有一个主进程,可以有多个渲染进程 上面的这些概念很重要,不展开细讲。 2 进程职责 主进程是用来实现应用的基础功能…...

基于Java SSM框架实现大学生校园兼职系统项目【项目源码+论文说明】

基于java的SSM框架实现大学生兼职系统演示 摘要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,大学生校园兼职系统当然也不能排除在外。大学生校园兼职系统是以实际运用为开…...

Codeforces Round 913 (Div. 3) A~E

目录 A. Rook 问题分析: B. YetnotherrokenKeoard 问题分析: C. Removal of Unattractive Pairs 问题分析: D. Jumping Through Segments 问题分析: E. Good Triples 问题分析: A. Rook 问题分析: 给一个棋子将其同行同列的位置输出 #include<bits/s…...

反序列化 [网鼎杯 2020 朱雀组]phpweb 1

打开题目 我们发现这个页面一直在不断的刷新 我们bp抓包一下看看 我们发现index.php用post方式传了两个参数上去&#xff0c;func和p 我们需要猜测func和p两个参数之间的关系&#xff0c;可以用php函数MD5测一下看看 我们在响应处得到了一串密文&#xff0c;md5解密一下看看 发…...

Java 何时会触发一个类的初始化

Java 何时会触发一个类的初始化&#xff1f; 使用new关键字创建对象访问类的静态成员变量 或 对类的静态成员变量进行赋值调用类的静态方法反射调用类时&#xff0c;如 Class.forName()初始化子类时&#xff0c;会先初始化其父类&#xff08;如果父类还没有进行过初始化的话&a…...

我的记事本

url uniform resource locator. 统一资源定位符 请求状态码 1XX:信息响应 2XX:成功响应 3XX:重定向消息 4XX:客户端错误响应 5XX:服务器端错误响应 IP地址分类 本机回环IP地址&#xff1a;127.0.0.1 &#xff5e; 127.255.255.254 局域网IP(私网IP) 192.168.0.0 &am…...

GO设计模式——4、单例模式(创建型)

目录 单例模式&#xff08;Singleton Pattern&#xff09; 优缺点 使用场景 饿汉式和懒汉式单例模式 单例模式&#xff08;Singleton Pattern&#xff09; 单例模式&#xff08;Singleton Pattern&#xff09;是一个类只允许创建一个对象&#xff08;或者实例&#xff…...

我对迁移学习的一点理解——领域适应(系列3)

文章目录 1. 领域适应&#xff08;Domain Adaptation&#xff09;的基本概念2.领域适应&#xff08;Domain Adaptation&#xff09;的目标3.领域适应&#xff08;Domain Adaptation&#xff09;的实现方法4.领域适应&#xff08;Domain Adaptation&#xff09;的可以解决的问题…...

阅读APP书源完全指南:3种快速导入方法与问题解决方案

阅读APP书源完全指南&#xff1a;3种快速导入方法与问题解决方案 【免费下载链接】Yuedu &#x1f4da;「阅读」自用书源分享 项目地址: https://gitcode.com/gh_mirrors/yu/Yuedu 「阅读」APP书源开源项目为小说爱好者提供了一个强大的解决方案&#xff0c;让您能够在一…...

革新性STL文件管理工具:让3D模型预览效率提升80%的Windows解决方案

革新性STL文件管理工具&#xff1a;让3D模型预览效率提升80%的Windows解决方案 【免费下载链接】STL-thumbnail Shellextension for Windows File Explorer to show STL thumbnails 项目地址: https://gitcode.com/gh_mirrors/st/STL-thumbnail 问题发现&#xff1a;3D设…...

JavaScript PPTX操作终极指南:5分钟掌握PPT自动化生成技巧

JavaScript PPTX操作终极指南&#xff1a;5分钟掌握PPT自动化生成技巧 【免费下载链接】js-pptx Pure Javascript reader/writer for PowerPoint 项目地址: https://gitcode.com/gh_mirrors/js/js-pptx 在当今数字化时代&#xff0c;自动化办公已经成为提升工作效率的关…...

颠覆式数据处理解决方案:CyberChef实现复杂数据转换的全流程优化

颠覆式数据处理解决方案&#xff1a;CyberChef实现复杂数据转换的全流程优化 【免费下载链接】CyberChef The Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis 项目地址: https://gitcode.com/GitHub_Trending/cy/CyberChef …...

glTF Pipeline完全攻略:高效3D模型优化解决方案

glTF Pipeline完全攻略&#xff1a;高效3D模型优化解决方案 【免费下载链接】gltf-pipeline Content pipeline tools for optimizing glTF assets. :globe_with_meridians: 项目地址: https://gitcode.com/gh_mirrors/gl/gltf-pipeline 3D模型加载缓慢、文件体积过大&am…...

智能信道建模实战指南:从技术选型到落地实施的决策框架

智能信道建模实战指南&#xff1a;从技术选型到落地实施的决策框架 【免费下载链接】DeepMIMO-matlab DeepMIMO dataset and codes for mmWave and massive MIMO applications 项目地址: https://gitcode.com/gh_mirrors/de/DeepMIMO-matlab 在5G向6G演进的过程中&#…...

【花雕学编程】代码泄露之后:深度剖析Claude开源对开发者生态的冲击与机遇

导语&#xff1a;2026年3月31日&#xff0c;Anthropic 旗下 Claude Code CLI 客户端源码意外泄露&#xff0c;1906个源文件、51.2万行TypeScript代码被开发者备份至 GitHub 仓库 instructkr/claude-code&#xff0c;标注为“仅供研究”。这场看似偶然的打包失误&#xff0c;并非…...

Cursor 高级技巧:@符号、Chat 模式与多文件编辑

前言 经过前两天的学习&#xff0c;你已经掌握了 Cursor 的基本用法&#xff0c;能用 CmdK 做单文件修改&#xff0c;用 Tab 自动补全代码。但 Cursor 真正强大的地方&#xff0c;在于它构建了一套以 AI 为中心的上下文感知系统——让 AI 不再是"盲写"&#xff0c;而…...

敲敲云零代码平台一键部署实战:命令安装 vs Docker 安装

敲敲云提供两种一键部署方式&#xff0c;一条命令即可完成私有化部署&#xff0c;全程约 3 分钟。本文记录实际操作过程 部署前准备 服务器配置建议&#xff1a; 4 核 8GB 内存&#xff0c;50GB SSD 系统盘。支持系统&#xff1a;TencentOS、Alibaba Cloud Linux、CentOS Stre…...

基于FireRedASR-AED-L与AIGC技术:自动生成语音错误分析报告

基于FireRedASR-AED-L与AIGC技术&#xff1a;自动生成语音错误分析报告 想象一下这个场景&#xff1a;你的团队刚刚完成了一轮大规模的语音识别系统测试&#xff0c;收集了上千小时的音频数据。接下来&#xff0c;你需要从海量的识别结果中&#xff0c;找出哪些词识别错了&…...