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

09Linux GDB学习笔记

Linux GDB使用

目录

文章目录

  • Linux GDB使用
    • 先编译文件
    • 1.检查安装
      • 1.1 安装GDB
    • 2.启动GDB
    • 3.退出GDB
    • 4.设置断点
      • 4.1 在指定行号处设置断点
      • 4.2 在指定函数名处设置断点
      • 4.3 在指定源文件和行号处设置断点
    • 4.4查看断点信息
    • 4.5删除断点
    • 5.运行
      • 5.1 <font color=#ff0000>逐过程:遇到函数调用时不会进入函数内部。
      • 5.2 <font color=#ff0000>逐语句:遇到函数调用时会进入函数内
    • 6.查看和修改变量
    • 7.查看函数调用栈
    • 7.查看源码和行号
    • 8.打印变量的的值
    • 多线程调试(待)
    • 设置线程锁(待)
    • 9.总命令表

先编译文件

-g:包含调试信息
-o:控制优化级别

请添加图片描述

1.检查安装

gdb --version
请添加图片描述

1.1 安装GDB

sudo apt-get install gdb

2.启动GDB

直接调试目标程序:gdb ./hello_server
附加到进程ID:gdb attach pid
调试core文件:gdb filename corename

3.退出GDB

命令:q 然后回车 或者 Ctrl + d 

4.设置断点

4.1 在指定行号处设置断点

b + 行号

4.2 在指定函数名处设置断点

b 源文件:函数名

4.3 在指定源文件和行号处设置断点

b 源文件:行号

4.4查看断点信息

info b

4.5删除断点

清除某个断点 (gdb) delete 4
清除所有断点 (gdb) delete 

请添加图片描述

请添加图片描述

5.运行

有断点运行到断点
r

5.1 逐过程:遇到函数调用时不会进入函数内部。

n

5.2 逐语句:遇到函数调用时会进入函数内

s

6.查看和修改变量

打印变量值:p 变量名
修改变量值:set var 变量名 = 新值
追踪变量:display 变量名,会在每次程序停止时显示变量值。
取消追踪:undisplay 变量名编号

7.查看函数调用栈

bt
鄙人样例
请添加图片描述设置断点
请添加图片描述
#0 表示最内层的函数调用
#1
#2
#3 表示 Init_ShellState的调用,它在 main.c调用。
#4 表示 main 函数的调用,它是程序的入口点
请添加图片描述

7.查看源码和行号

l

8.打印变量的的值

p 变量名

请添加图片描述

多线程调试(待)

查看线程信息:info thread
切换线程:thread 线程编号
对指定线程执行命令:thread apply 线程编号 command

设置线程锁(待)

锁定线程:set scheduler-locking on
解锁线程:set scheduler-locking off
单步执行时锁定线程:set scheduler-locking step

9.总命令表

ctrl + d 或 quit 调试命令	gdb binFile 退出
list( l )  行号	显示binFile源代码,接着上次的位置往下列,每次列10行。
list( l ) 函数名	列出某个函数的源代码。
run( r )	运行程序。
next( n )	单条执行。
step( s )	进入函数体调用
break(b) 行号	在某一行设置断点
break(b) 函数名	在某个函数开头设置断点
info break( b )	查看断点信息。
finish	执行到当前函数返回,然后停下来等待命令
print( p ) 	打印表达式的值,通过表达式可以修改变量的值或者调用函数
p 变量	打印变量值(显示一次)。
set var	修改变量的值
continue( c )	从当前位置开始连续而非单步执行程序
delete breakpoints	删除所有断点
delete breakpoints n	删除序号为n的断点
disable breakpoints	禁用断点
enable breakpoints	启用断点
info(或i) breakpoints	参看当前设置了哪些断点
display 变量名	跟踪查看一个变量,每次停下来都显示它的值
undisplay 序号	取消对先前序号设置的那些变量的跟踪
until X行号	运行至X行
breaktrace(或bt)	查看各级函数调用及参数
info( i )  locals	查看当前栈帧局部变量的值
quit	退出gdb

优秀文献推荐:
[Linux | 调试器GDB的详细教程【纯命令行调试】]https://blog.csdn.net/Fire_Cloud_1/article/details/129213449
请添加图片描述听歌曲看图,意想不到
希望今日工作/学习的你也能get到我的快乐…
请添加图片描述

参考文献:感谢!!
https://blog.csdn.net/lovely_dzh/article/details/109160337

相关文章:

09Linux GDB学习笔记

Linux GDB使用 目录 文章目录 Linux GDB使用先编译文件1.检查安装1.1 安装GDB 2.启动GDB3.退出GDB4.设置断点4.1 在指定行号处设置断点4.2 在指定函数名处设置断点4.3 在指定源文件和行号处设置断点 4.4查看断点信息4.5删除断点5.运行5.1 <font color#ff0000>逐过程&am…...

海外金融牌照

一般来说牌照申请分两个大类&#xff1a;数字货币牌照和外汇牌照。每个国家的牌照具体监管的情况也是不一样的。申请牌照时该如何选择&#xff1f; 今天先说说区块链牌照&#xff0c;具有代表性的有美国msb牌照&#xff0c;加拿大msb牌照&#xff0c;爱沙尼亚数字货币牌照&…...

addEventListener()方法中的几个参数,以及作用

addEventListener() 方法是 JavaScript 中用于处理指定元素的指定事件的函数。它有三个参数&#xff1a; type&#xff08;必需&#xff09;&#xff1a;一个字符串&#xff0c;指定要监听的事件名。 listener&#xff08;必需&#xff09;&#xff1a;一个实现了 EventListen…...

FreeRtos进阶——通用链表的实现方式

通用链表实现方式&#xff08;一&#xff09; struct node_t {struct node_t *next; };struct person {struct node_t node;char *name;int age; };struct dog {struct node_t node;char *name;int age;char *class; };在此链表中&#xff0c;node结构体被放在了最前面&#x…...

【kubernetes】关于k8s集群如何将pod调度到指定node节点(亲和与反亲和等)

目录 一、调度约束 1.1K8S的 List-Watch 机制 ⭐⭐⭐⭐⭐ 1.1.1Pod 启动典型创建过程 二、调度过程 2.1Predicate&#xff08;预选策略&#xff09; 常见的算法 2.2priorities&#xff08;优选策略&#xff09;常见的算法 三、k8s将pod调度到指定node的方法 3.1指定…...

AOP基础

黑马程序员JavaWeb开发教程 文章目录 一、AOP概述二、AOP快速入门2.1 步骤2.2 AOP的使用场景2.3 AOP的优势 三、AOP核心概念3.1 AOP核心概念3.2 AOP执行流程 一、AOP概述 AOP&#xff1a;Aspect Oriented Propragramming(面向切面变成、面向方面编程)其实就是面向特定方法编程…...

EXSI虚拟机新增磁盘并将空间扩充到已有分区

这里写自定义目录标题 1、在EXSI虚拟机中新增一块磁盘配置大小2、确认新磁盘3、格式化新分区4、添加新分区到LVM5、将新增分区添加到已有分区里 1、在EXSI虚拟机中新增一块磁盘配置大小 注意事项&#xff1a; (1)需确保虚拟机已关闭活处于维护模式&#xff0c;避免数据丢失 (2…...

民国漫画杂志《时代漫画》第39期.PDF

时代漫画39.PDF: https://url03.ctfile.com/f/1779803-1248636473-6bd732?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!...

每天一个数据分析题(三百四十二)

根据量化对象是业务行为结果还是财务行为结果&#xff0c;可以将指标分为业务指标及财务指标两大类&#xff0c;以下说法正确的是&#xff1f; A. 财务指标是按照财务规则来对财务情况进行量化的指标 B. 业务指标是按照业务规则来对业务情况进行量化的指标 C. 业务指标需要按…...

c++会员消费积分系统

这段代码实现了一个简单的会员卡管理系统&#xff0c;具有以下功能&#xff1a; 会员开卡&#xff1a;用户可以输入会员的姓名和会员编号&#xff0c;系统将创建新的会员卡并记录相关信息。 消费积分&#xff1a;用户可以输入会员编号和消费积分&#xff0c;系统会根据会员编号…...

如何获知表中数据被删除

目录 1. 使用触发器 (Triggers)示例 2. 使用审计工具 (Audit Tools)示例 3. 使用Binlog (Binary Log)示例 4. 使用应用层记录日志示例 总结 要查询 MySQL 数据库表中的数据何时被删除&#xff0c;可以采取以下几种方法&#xff1a; 1. 使用触发器 (Triggers) 可以在表上创建一…...

机器学习之sklearn基础教程

码到三十五 &#xff1a; 个人主页 机器学习库scikit-learn&#xff08;简称sklearn&#xff09;是Python中一个功能强大的机器学习库&#xff0c;它提供了大量用于数据挖掘和数据分析的工具&#xff0c;包括分类、回归、聚类、降维等算法。文中我们一起简单探讨sklearn的一些基…...

ES升级--04--SpringBoot整合Elasticsearch

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 SpringBoot整合Elasticsearch1.建立项目2.Maven 依赖[ES 官方网站&#xff1a;https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.8/index.html](…...

eclipse如何debug

步骤1&#xff1a;双击显示行数的数字来设置断点 步骤2&#xff1a;点击debug 步骤3&#xff1a;在弹出的窗口点击switch 步骤4&#xff1a;就可以调试了&#xff0c;右边是查看数据的&#xff0c;点击上面的图标进行下一步 步骤5&#xff1a;退出debug 步骤6&#xff1a;…...

无人售货机零售业务成功指南:从市场分析到创新策略

在科技驱动的零售新时代&#xff0c;无人售货机作为一种便捷购物解决方案&#xff0c;正逐步兴起&#xff0c;它不仅优化了消费者体验&#xff0c;还显著降低了人力成本&#xff0c;提升了运营效能。开展这项业务前&#xff0c;深入的市场剖析不可或缺&#xff0c;需聚焦消费者…...

开源代码分享(32)-基于改进多目标灰狼算法的冷热电联供型微电网运行优化

参考文献&#xff1a; [1]戚艳,尚学军,聂靖宇,等.基于改进多目标灰狼算法的冷热电联供型微电网运行优化[J].电测与仪表,2022,59(06):12-1952.DOI:10.19753/j.issn1001-1390.2022.06.002. 1.问题背景 针对冷热电联供型微电网运行调度的优化问题&#xff0c;为实现节能减排的目…...

7、架构-架构的安全性

即使只限定在“软件架构设计”这个语境下&#xff0c;系统安全仍然是一 个很大的话题。我们谈论的计算机系统安全&#xff0c;不仅仅是指“防御系统 被黑客攻击”这样狭隘的安全&#xff0c;还至少应包括&#xff08;不限于&#xff09;以下这些问 题的具体解决方案。 认证&am…...

LeetCode题练习与总结:路径总和Ⅱ--113

一、题目描述 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [5,4,8,11,null,13,4,7,2,null,null,5,1], target…...

Java复数计算

复数在数学、科学或者工程领域是很常用的&#xff0c;可以通过调用Apache Commons Math库来完成&#xff0c;也可以自己手撸。 一、使用Apache Commons Math库 这个库有多个版本&#xff0c;在写这篇文章时&#xff0c;它的最新版是2022年12月19日的4.0-beta1&#xff0c;构建…...

MySQL-事务日志

事务的隔离性由 锁机制 实现 事务的原子性、一致性、隔离性 由事务的 redo日志 和 undo 日志来保证 redo log 称为 重做日志&#xff0c;提供再写入操作&#xff0c;恢复提交事务修改的页操作&#xff0c;用来保证事务的持久性。undo log 称为 回滚日志&#xff0c;回滚行记录…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...