【工具】-gdb-学习笔记

news2024/11/24 9:19:13

准备工作

  • 程序的发布方式有两种,debug模式和release模式

  • Linux gcc/g++出来的二进制程序,默认是release模式

  • 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项,发布成debug模式

如下源代码经过编译:

   #include <stdio.h>
 
 int SumAdd(int x)
 {
     int i=1;
     int sum=0;
     for(i=1;i<=x;i++)
     {
         sum+=i;
    }
    return sum;
}

int main()
{
    printf("%d \n",SumAdd(100));
    return 0;
}            
        

命令:gcc -o test test.c -g
在这里插入图片描述

gdb调试

命令:gdb test

在这里插入图片描述

l或者l函数名查看源代码(默认显示10行)

在这里插入图片描述

r或者run运行程序,没有设置断点,会运行完。

在这里插入图片描述

b或者break行号、地址、函数名设置断点;info b 显示所有断点信息

在这里插入图片描述

n或者next单步执行(enter重复执行上个命令)

这里可以看到寄存器区域(rbp,rsp,rip)、汇编代码、源代码、栈区域。
在这里插入图片描述在这里插入图片描述

stack 数量,查看栈空间

在这里插入图片描述

s或者step,进入函数单步调用

在这里插入图片描述

finish跳出当前函数调用,对于嵌套比较多的系统函数调用非常有用

可以看到是进入了上一个函数,main函数,等待下一步命令
在这里插入图片描述

p+变量名打印变量值

在这里插入图片描述

continue或c:从当前位置开始连续而非单步执行程序

在这里插入图片描述

delete breakpoints:删除所有断点;delete breakpoints n:删除序号为n的断点;disable breakpoints:禁用断点;enable breakpoints:启用断点
display 变量名:跟踪查看一个变量,每次停下来都显示它的值;undisplay:取消对先前设置的那些变量的跟踪
x *n/$rip :查看内存值
set :设置变量
until X(行号):跳至X行
q或quit:退出gdb

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

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

相关文章

VS Code C/C++ MSVC编译器

官方教程 通过快捷方式打开VS Code是编译不了的,需要对tasks.json修改(Tasks: Configure default build task) 先创建tasks.json 复制这段配置到tasks.json,记得修改VsDevCmd.bat的路径 {"version": "2.0.0","windows": {"options"…

深度学习中卷积算子和dropout算子的作用

笔者在调网络的时候&#xff0c;有时调细一些在想不同卷积核尺寸的卷积操作有啥区别&#xff0c;在哪些算子后用dropout会比较好呢&#xff1f;于是有了下面一段总结。 文章目录 一、卷积核尺寸1X1和3X3的区别1x1卷积核3x3卷积核 二、dropout的作用使用情况算子组合注意事项 一…

[读论文]-FreeU: Free Lunch in Diffusion U-Net 提高生成质量

摘要 In this paper, we uncover the untapped potential of diffusion U-Net, which serves as a “free lunch” that substantially improves the generation quality on the fly. We initially investigate the key contributions of the U-Net architecture to the denois…

《计算机网络》(第8版)第9章 无线网络和移动网络 复习笔记

第 9 章 无线网络和移动网络 一、无线局域网 WLAN 1 无线局域网的组成 无线局域网提供移动接入的功能&#xff0c;可分为两大类&#xff1a;有固定基础设施的和无固定基础设 施的。 &#xff08;1&#xff09;IEEE 802.11 IEEE 802.11 是无线以太网的标准&#xff0c;是有固定…

SQL数据库备份

转载&#xff1a;数据库备份与还原 1. 以下过程为记录客户单位备份过程。 一般有E盘选择E盘备份&#xff0c;否则选择D盘备份。选中备份文件需要重命名&#xff0c;以防原文件被覆盖。切换选项&#xff0c;选中压缩备份。

IoTDB 入门教程 问题篇④——外网攻击导致OOM内存溢出,服务崩溃

文章目录 一、前文二、思考问题三、验证问题五、深入思考六、总结 一、前文 IoTDB入门教程——导读 二、思考问题 从上一篇博客得知&#xff0c;因为内存大小设置的不合理&#xff0c;容易导致OOM内存溢出&#xff0c;最终导致服务崩溃。 事后转念一想&#xff0c;又在思考&…

【ADC】欠采样的基本理论及其应用中的抗混叠滤波器设计原则

概述 之前的两篇文章&#xff1a;信号采样中的频谱混叠现象、频谱混叠的MATLAB仿真与抗混叠滤波器设计 介绍了关于 ADC 采样时&#xff0c;有关奈奎斯特采样定律的基本理论、频谱混叠现象的由来&#xff0c;以及抗混叠滤波器的设计与仿真。但这都是基于过采样的情况&#xff0…

如何理解进程?

前言&#xff1a; 我们在前面的对操作系统的学习&#xff0c;目的是为了让我们加深操作系统对“管理”的描述。我们在上一节了解到操作系统存在许多管理&#xff0c;今天我们就来初次了解一下——进程管理。 进程概念&#xff1a; 课本概念&#xff1a;程序的一个执行实例&…

cube studio 修改logo 水印,标题,图标等信息。

修改logo 修改后需重新打包前端镜像 修改登录界面标题 修改配置文件config.py中的app_name变量&#xff0c;线上需要重启后端pod 修改水印 修改后需重新打包前端镜像 修改标题 修改后需重新打包前端镜像 修改个性化图标 修改后需重新打包后端镜像 修改后需重新打包前端镜…

Elasticsearch:使用 API 密钥验证添加远程集群

API 密钥身份验证使本地集群能够通过跨集群 API 密钥&#xff08;cross-cluster API key&#xff09;向远程集群进行身份验证。API 密钥需要由远程集群的管理员创建。本地集群配置为在向远程集群发出每个请求时提供此 API 密钥。远程集群将根据 API 密钥的权限验证 API 密钥并授…

JVM—CMS收集器

参考资料&#xff1a;深入理解Java虚拟机&#xff1a;JVM高级特性与最佳实践&#xff08;第3版&#xff09;周志明 CMS收集器&#xff08;Concurrent Mark Sweep&#xff09;是一种以获取最短回收停顿时间为目标的收集器。低并发收集、低停顿。 CMS收集器是基于标记—清除算法实…

数据库相关概念大全!

一、什么是数据库&#xff1f; 1.数据库 数据库是一种更易于访问、更高效且更有条理的长期存储和处理信息的方式。 2. 优点&#xff0c;作用 数据库存储数据的规范性和系统性以及其检索数据的便捷性使其成为基于 Web 的应用程序中重要的部分。 数据库几乎可以用于所有应用程…

谷粒商城实战笔记-110~114-全文检索-ElasticSearch-查询

文章目录 一&#xff0c;110-全文检索-ElasticSearch-进阶-两种查询方式二&#xff0c;111-全文检索-ElasticSearch-进阶-QueryDSL基本使用&match_all三&#xff0c;112-全文检索-ElasticSearch-进阶-match全文检索四&#xff0c;113-全文检索-ElasticSearch-进阶-match_ph…

HarmonyOS 用List组件实现组合列表项

界面分析&#xff1a; 由于整体UX设计图符合从上至下的布局&#xff0c;所以可以采用Column组件作为外层容器 简介&#xff1a; 最上方的标题可以使用Text组件进行加载渲染中间的Banner图和简介分别可以使用Image组件和Text组件进行加载最后一部分可以看作是一个列表&#xf…

在PAI-DSW中连接Neo4J,并批量创建知识图谱

我在 阿里云DSW实例中安装并运行Neo4J 中提到过&#xff0c;由于PAI-DSW的专有网络配置不能确保百分之百成功&#xff0c;因而很难实现通过本地的浏览器登录在PAI-DSW中启动的Neo4J图数据库。 我当时想出的一个解决办法是使用./cypher-shell语句在命令行登录neo4j&#xff0c;…

工业5G路由器赋能户外组网远程监控及预警

随着物联网、大数据、云计算等技术的快速发展&#xff0c;工业领域对于远程监控、实时预警和数据传输的需求日益增长。特别是在户外复杂环境下&#xff0c;传统的有线网络组网方式面临着布线难度大、成本高、维护困难等问题。 工业5G路由器在户外组网远程监控预警应用基于高速…

Golang 并发控制模型

文章目录 Golang 并发控制模型一、使用 channel 通知实现并发控制1、无缓冲通道2、有缓冲通道 二、使用 sync 包中的 WaitGroup 实现并发控制1、sync.WaitGroup2、sync.Once 三、使用 Context 上下文实现并发控制1、简介2、context 包3、继承 context4、context 例子5、context…

基于springMVC的图书管理系统

进度终于来到了springMVC&#xff0c;下次估计就是springboot了&#xff0c;感觉每次开始新框架&#xff0c;环境都是大问题&#xff0c;项目一共敲四天&#xff0c;环境卡三天。总结一下这次碰到的问题和解决方法吧。 问题和解决方法 1、controller中return无法跳转到界面&a…

【安装】Linux Centos 或 Debian 离线安装指定版本MariaDB

【安装】Linux Centos 或 Debian 离线安装指定版本MariaDB 下载地址 https://mariadb.com/downloads/community/community-server/https://mirrors.aliyun.com/mariadb/yum/https://mariadb.com/downloads/community/community-server/ Download MariaDB Server - MariaDB.or…

NineData云原生智能数据管理平台新功能发布|2024年7月版

本月发布 12 项更新&#xff0c;其中性能优化 3 项、功能优化 8 项、安全性发布 1 项。 1. 性能优化 数据复制 - SQL Server 增量性能优化 调整读取和写入方式&#xff0c;让 SQL Server 增量复制的性能轻松达到 5000 RPS 以上。 数据复制 - Doris|SelectDB|StarRocks 性能优…