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

Vscode GDB 查看内存的值

在VSCode的GDB图形界面中,你可以使用"调试控制台(Debug Console)"来查看malloc返回的地址里的值。以下是具体的步骤:

  1. 首先,你需要在你的代码中设置一个断点,这个断点应该在malloc函数调用之后,这样你可以获取到malloc返回的地址。
  2. 然后,开始调试你的程序,当程序运行到你设置的断点时,它会暂停。
  3. 此时,打开"调试控制台(Debug Console)",你可以在这里输入GDB命令。
  4. 假设malloc返回的地址存储在变量ptr中,你可以使用以下GDB命令来查看这个地址里的值:
-exec x/1xb ptr

这个命令会显示从地址ptr开始的一个字节的值,并以16进制的形式显示。

请注意,你需要根据你想查看的内存的类型和长度,来调整x命令的参数。例如,如果你想查看一个整数,你可能需要使用x/1dw来查看4个字节,并以十进制的形式显示。

在这里插入图片描述

malloc_usable_size函数是一个在Linux系统中的库函数,它返回一个指向由malloc或相关函数分配的内存块的指针所指向的可用字节数。这个函数的主要用途是用于调试和自省。

关于malloc后的值都是0xbe的问题,这可能是因为在你的系统中,malloc函数在分配内存时,会将新分配的内存初始化为0xbe。这是一种常见的调试技术,用于帮助开发者识别未初始化的内存。这样,如果你在程序中看到0xbe,那么你就知道这块内存是由malloc分配的,但还没有被初始化。请注意,这种行为可能因系统和malloc的实现而异,不是所有系统或malloc的实现都会这样做。在一些系统或malloc的实现中,malloc可能会将新分配的内存初始化为其他值,或者根本不进行初始化。


在 GDB 中,-exec 是一个用于执行 GDB 命令的前缀。例如,如果你想在 GDB 中运行 continue 命令,你可以在 GDB 终端中输入 -exec continue。这将会继续执行你正在调试的程序,直到遇到下一个断点或程序结束。这种方式在你通过其他工具(如 IDE)使用 GDB 时特别有用,因为这些工具可能需要以一种结构化的方式来获取 GDB 的输出。请注意,-exec 前缀并不总是必需的,特别是当你直接在终端中使用 GDB 时。在这种情况下,你可以直接输入 continue 或其他 GDB 命令。

在 GDB 中,-exec 前缀主要在以下情况下使用:

  1. 通过其他工具使用 GDB:当你通过其他工具(如 IDE)使用 GDB 时,这些工具可能需要以一种结构化的方式来获取 GDB 的输出。在这种情况下,你可能需要使用 -exec 前缀来执行 GDB 命令。
  2. 使用 MI(Machine Interface)模式:GDB 提供了一种名为 MI 的接口,它是为了让其他程序(如前端界面或 IDE)能够更好地与 GDB 交互而设计的。在 MI 模式下,你需要使用 -exec 前缀来执行 GDB 命令。

当你直接在终端中使用 GDB 时,通常不需要使用 -exec 前缀。你可以直接输入 continue 或其他 GDB 命令来执行。


基于Ubuntu20.04的环境测试,开了asan对应的值为0xffffffbe,没开asan为全0。
在这里插入图片描述

相关文章:

  • 前端js调取摄像头并实现拍照功能
  • MidJourney笔记(1)-入门
  • 今日定音,博通以610亿美元成功收购VMware | 百能云芯
  • Office文件在线预览大全-Word文档在线预览的实现方法-OFD文档在线预览-WPS文件在线预览
  • LeetCode热题100——图论
  • 基于springboot实现班级综合测评管理系统项目【项目源码+论文说明】
  • 11.21序列检测,状态机比较与代码,按键消抖原理
  • npm install安装报错
  • PPT幻灯片里的图片,批量提取
  • HashMap知识点总结
  • 单元测试实战(五)普通类的测试
  • 某高品质房产企业:借助NineData平台,统一数据库访问权限,保障业务安全
  • Lstm+transformer的刀具磨损预测
  • 与客户沟通过程中的30个实用技巧
  • PyQt(学习笔记)
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【Leetcode】104. 二叉树的最大深度
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • Django 博客开发教程 16 - 统计文章阅读量
  • gops —— Go 程序诊断分析工具
  • If…else
  • JSDuck 与 AngularJS 融合技巧
  • JS函数式编程 数组部分风格 ES6版
  • mongo索引构建
  • MySQL主从复制读写分离及奇怪的问题
  • Octave 入门
  • 关于for循环的简单归纳
  • 检测对象或数组
  •  一套莫尔斯电报听写、翻译系统
  • 最近的计划
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (11)MSP430F5529 定时器B
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (26)4.7 字符函数和字符串函数
  • (AngularJS)Angular 控制器之间通信初探
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (C语言)球球大作战
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (windows2012共享文件夹和防火墙设置
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (六)vue-router+UI组件库
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (强烈推荐)移动端音视频从零到上手(下)
  • (五)Python 垃圾回收机制
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .bashrc在哪里,alias妙用