当前位置: 首页 > 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;回滚行记录…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...