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

[C++]debug介绍+debug时如何查看指针指向内存处的值

一、简介

预备工具和知识:使用使用VSCode使用Debug。
本文简介:本文将简要介绍debug中ContinueStep OverStep IntoRestart的功能。并介绍如何在debug时查看动态内存地址(指针)的值;

二、Debug介绍

1. 设置断点:

  • 设置普通断点:
    使用鼠标在编辑框左侧左击即可设置一个断点,当在debug模式下运行时,当程序运行到此处会暂停。
    如下图所示:
    在第7行处设置一个断点
    使用debug模式运行,程序运行到断点处会暂停,如下图所示。
    程序运行到断点处暂停
  • 设置条件断点:
    我们可以设置一些条件断点,指定在特定条件下断点生效。例如,我们在int b = 1;处设置一个断点,并设定当a==1时,该断点生效。
    首先我们在第7行处设置一个普通断点,然后右击断点,选择Edit Breakpoint,再在编辑框里输入a==1如下图所示:
    设置条件断点
    此时只有当变量a等于1时,第7行的断点才生效(此时代码中a等于0,不满足条件,因此此断点不生效)。我们依旧选择debug模型运行程序,结果如下:
    使用条件断点
    我们会发现,此时程序会直接运行结束,不会在断点处暂停。假如我们将代码中的第6行改为:int a=1;,令变量a等于1,再运行一次,会发现程序在断点处暂停了。这说明我们设置的条件断点只有当a等于1时才生效。
    条件断点生效

2. Debug各按钮介绍:

  • Continue:在当前断点处暂停时,点击 Continue 会继续运行程序,并在下一个断点处暂停(如果有下一个断点,并能运行到该断点处的话)。
  • Step Over:单步执行:若当前行代码为函数,则会直接运行完当前行的函数,不进入该函数内部。若当前行代码为其他语句,则直接运行完当前行语句。并在下一行处暂停。
  • Step Into:单步执行:若当前行代码为函数,则会进入该函数内部继续单步执行。若当前行代码为其他语句,则直接运行完当前行语句。并在下一行处暂停。
  • Step Out:若此时是经过Step Into到某子函数内部时,点击Step Out会直接运行完当前子函数,并跳转到上层函数处继续单步执行。若在此之前没有经过Step Into,则该功能无效。
  • Restart:重新运行程序。

三、查看动态分配的内存变量

在debug时,对于简单变量、数组变量可以在左侧的VARIABLES窗口里看到变量的值,但是对于指针类型的变量我们只能看到指针的值(地址),不能看到指针所指向的内存位置里的值。如下图所示:
查看变量
从上图中可以看出,对于简单变量a和数组变量b可以直接查看内存中的数值,而对于指针p只能看到其中的的地址,无法看到指针指向的地址里的数值。
我们可以使用以下两种方法查看指针p指向位置处的内存值:

1. 使用*pointer@size查看指针处的值

VARIABLES窗口处右击p,点击Add to watch,点击完完成后会在WATCH窗口里显示此时正在监视变量p,如下图所示:
将p加入watch在WATCH窗口内监视变量p
然后在WATCH窗口右击p选择Edit Expression,将p修改为*pointer@size的格式,由于申请p时申请了5个int型变量的内存,因此size=5。那么我们将WATCH窗口中的p改为*p@5,如下图所示,即可查看p指向的内存处的值:
使用8pointer@size形式查看指针处内存的值

2. 使用*(type(*)[size])pointer将指针转为数组变量

我们也可以将指针p强制转为数组类型,然后查看p处内存的值。与前面类似,只不过此时需要将WATCH窗口里的p改为*(type(*)[size])pointer格式,对于int* p=int[5],我们需要改为*(int(*)[5])p,如下图所示,可以看到使用该方法也可查看p指向的内存处的值:
使用*(type(*)[size])pointer格式查看指针处内存的值

四、参考引用

[1]. debug 调试——step over、step into、step out 的区别
[2]. VScode调试c代码时,如何显示动态分配的指针数组

相关文章:

[C++]debug介绍+debug时如何查看指针指向内存处的值

一、简介 预备工具和知识:使用使用VSCode使用Debug。 本文简介:本文将简要介绍debug中Continue,Step Over,Step Into和Restart的功能。并介绍如何在debug时查看动态内存地址(指针)的值; 二、D…...

AI学习指南数学工具篇-凸优化在支持逻辑回归中的应用

AI学习指南数学工具篇-凸优化在支持逻辑回归中的应用 一、引言 在人工智能领域,逻辑回归是一种常见的分类算法,它通过学习样本数据的特征和标签之间的关系,来进行分类预测。而在逻辑回归算法中,凸优化是一种重要的数学工具&…...

Flutter 中的 AspectRatio 小部件:全面指南

Flutter 中的 AspectRatio 小部件:全面指南 Flutter 是一个流行的跨平台 UI 框架,它提供了丰富的小部件来帮助开发者构建高质量的应用程序。在 Flutter 的小部件库中,AspectRatio 是一个非常有用的小部件,它允许开发者以一种简单…...

应用程序中的会话管理和Cookie安全指南

应用程序中的会话管理和Cookie安全指南 在现代应用程序中,会话管理和Cookie安全是确保用户信息和数据安全的重要组成部分。本文将详细介绍会话管理的最佳实践以及如何通过安全的Cookie设置来保护会话ID的交换。 单点登录(SSO)及会话管理机制…...

备战秋招c++ 【持续更新】

T1 牛牛的快递 原题链接:牛牛的快递_牛客题霸_牛客网 (nowcoder.com) 题目类型:模拟 审题&确定思路: 1、超过1kg和不足1kg有两种不同收费方案 ---- 起步价问题 2、超出部分不足1kg的按1kg计算 ----- 向上取整 3、向上取整的实现思路…...

整数拆分~

way&#xff1a;process //上一个拆出来的数是pre //还剩下rest需要去拆 //返回拆解的方法数 #include<iostream> using namespace std;//上一个拆出来的数是pre //还剩下rest需要去拆 //返回拆解的方法数 int process(int pre, int rest) {if(rest0) return 1;//因为后…...

【Qt Creator】跨平台的C++图形用户界面应用程序开发框架---QT

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1.互联网的核心岗位以及职…...

KingbaseES数据库物理备份还原sys_rman

数据库版本&#xff1a;KingbaseES V008R006C008B0014 简介 sys_rman 是 KingbaseES 数据库中重要的物理备份还原工具&#xff0c;支持不同类型的全量备份、差异备份、增量备份&#xff0c;保证数据库在遇到故障时及时使用 sys_rman 来恢复到数据库先前状态。 文章目录如下 1.…...

【CV】视频图像背景分割MOG2,KNN,GMG

当涉及背景分割器&#xff08;Background Subtractor&#xff09;时&#xff0c;Mixture of Gaussians&#xff08;MOG2&#xff09;、K-Nearest Neighbors&#xff08;KNN&#xff09;和Geometric Multigid&#xff08;GMG&#xff09;是常用的算法。它们都用于从视频流中提取…...

使用 Python 简单几步去除 PDF 水印

推荐一个AI网站&#xff0c;免费使用豆包AI模型&#xff0c;快去白嫖&#x1f449;海鲸AI 在处理 PDF 文件时&#xff0c;水印有时会影响文件的可读性或美观性。幸运的是&#xff0c;Python 提供了多种库来操作 PDF 文件&#xff0c;其中 PyMuPDF&#xff08;又名 fitz&#xf…...

【香橙派 AIpro】OrangePi AIpro :教育、机器人、无人机领域的超级AI大脑,华为昇腾处理器驱动的AI开发板新标杆

【OrangePi AIpro&#xff1a;教育、机器人、无人机领域的超级AI大脑&#xff0c;华为昇腾处理器驱动的AI开发板新标杆】 文章目录 一、开箱与初印象1. 初印象2. 上手开机3. 安装和运行 TightVNC 远程桌面3.1. 安装 TightVNC 服务器3.2. 启动 VNC 服务器3.3. 在 Windows 上使用…...

【Mac】 CleanMyMac X for mac V4.15.2中文修复版安装教程

软件介绍 CleanMyMac X是一款为Mac设计的优秀软件&#xff0c;旨在帮助用户优化其设备的性能并提供清理和维护功能。以下是 CleanMyMac X的一些主要功能和特点&#xff1a; 1.系统性能优化&#xff1a;软件可以扫描和修复潜在的性能问题&#xff0c;包括无效的登录项、大文件…...

单片机通信协议(1):SPI简介

关于SPI SPI&#xff08;串行外设接口&#xff09;是板载设备间通信接口之一。它是由摩托罗拉公司&#xff08;飞思卡尔半导体&#xff09;推出的。由于其简单性和通用性&#xff0c;它被纳入各种外围设备中&#xff0c;并与飞利浦I2C总线并列。 SPI的三线或四线信号数量比IIC…...

免税商品优选购物商城,基于 SpringBoot+Vue+MySQL 开发的前后端分离的免税商品优选购物商城设计实现

目录 一. 前言 二. 功能模块 2.1. 登录界面 2.2. 管理员功能模块 2.3. 商家功能模块 2.4. 用户前台功能模块 2.5. 用户后台功能模块 三. 部分代码实现 四. 源码下载 一. 前言 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过…...

京准电子、NTP电子时钟系统(网络时钟系统)概述

京准电子、NTP电子时钟系统&#xff08;网络时钟系统&#xff09;概述 京准电子、NTP电子时钟系统&#xff08;网络时钟系统&#xff09;概述 时钟系统工作原理是由母钟接收GPS/北斗卫星的时间信息&#xff0c;母钟通过串口和NTP以太网接口为其他各系统提供统一的标准时间信号&…...

【常用的队列总结】

文章目录 队列的介绍Queue队列的基本概念与操作队列的基本概念 常见的队列介绍非阻塞队列LinkedList:ArrayDeque:PriorityQueue: 阻塞队列ArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueue DelayQueueSynchronousQueue 队列的介绍 Queue队列的基本概念与操作 在 …...

机器学习过拟合和欠拟合!看这一篇文章就够了 建议收藏!(上篇)

在机器学习中&#xff0c;有一项非常重要的概念&#xff0c;那就是&#xff1a;过拟合&#xff08;Overfitting&#xff09;和欠拟合&#xff08;Underfitting&#xff09;。 它们涉及到机器学习中常见的两种模型性能问题&#xff0c;分别表示模型在训练数据上表现得过于复杂或…...

关于阳光雨露外派联想的面试感想

最近在找工作&#xff0c;接到了一个阳光雨露外派联想的面试邀请。说实在的一开始就有不对劲的感觉。想必这就是大厂的自信吧&#xff0c;上就问能不能现场面试&#xff0c;然后直接发面试邀请。这时候我倒是没觉得有啥问题。 然后今天就去面试去了&#xff0c;住的比较偏&…...

深度神经网络介绍与实战

一、介绍 深度神经网络(Deep Neural Networks,DNNs)是一种强大的机器学习算法,被广泛应用于计算机视觉、自然语言处理、语音识别等领域。它是人工神经网络的一种扩展,包含多个隐藏层,每一层都由多个神经元组成。 与传统的机器学习算法相比,深度神经网络具有以下特点:…...

图解 Transformer

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…...

嵌入式Linux驱动移植:基于MAX31865与PT100的高精度温度采集方案

1. 项目概述与核心思路最近在做一个工业边缘计算网关的项目&#xff0c;需要高精度地监测几个关键节点的温度&#xff0c;精度要求至少达到0.5℃。市面上常见的DS18B20这类数字温度传感器&#xff0c;在精度和抗干扰能力上有点力不从心。于是&#xff0c;我把目光投向了铂电阻温…...

丙午年三月三十平镜里

丙午年三月三十平镜里 曾几风流里&#xff0c;皆逝日常中。 莫名春伤寒&#xff0c;妙在岁月功。 儿时不知道&#xff0c;青烟多捉空。 老壮老路上&#xff0c;庭院情境通。 谓花当此季&#xff0c;寻因那刻虹&#xff1f; 虚妄浮云聚&#xff0c;耕种顺序隆。 斯文源村落&…...

NotebookLM时间线创建全解析,手把手教你用AI自动生成可交互知识图谱

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM时间线创建的核心价值与适用场景 NotebookLM 的时间线&#xff08;Timeline&#xff09;功能并非简单的时间戳罗列&#xff0c;而是将文档片段、引用来源与用户思考按真实发生顺序动态编织成…...

Java 高级特性高频面试题 30 道(含答案)【简洁版】

覆盖泛型、反射、注解、Lambda/Stream、函数式接口、动态代理、JDK8 新特性、线程池、JVM、IO/NIO、序列化等核心高频考点&#xff0c;适合中高级 Java 工程师面试。一、泛型&#xff08;3 题&#xff09;什么是 Java 泛型&#xff1f;泛型的作用是什么&#xff1f;答案&#…...

多智能体路由:从场景定义到Agent解析的工程实践

大家好&#xff0c;我是程序员小策。 场景&#xff1a;你正在做一个 AI 面试系统。产品经理说&#xff1a;“我们不光要一个通用聊天机器人&#xff0c;还要一个能自动出题、能给用户答案打分、还能分析用户表情神态的面试官。” 你一拍脑袋&#xff1a;行&#xff0c;不就是…...

5分钟快速获取微信数据库密钥:Sharp-dumpkey完整指南

5分钟快速获取微信数据库密钥&#xff1a;Sharp-dumpkey完整指南 【免费下载链接】Sharp-dumpkey 基于C#实现的获取微信数据库密钥的小工具 项目地址: https://gitcode.com/gh_mirrors/sh/Sharp-dumpkey 当你的微信聊天记录被加密锁定&#xff0c;无法备份或迁移时&…...

使用 Taotoken CLI 工具一键配置团队开发环境中的大模型端点

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用 Taotoken CLI 工具一键配置团队开发环境中的大模型端点 在团队协作开发中&#xff0c;统一管理大模型 API 的接入配置是一个常…...

MoE架构揭秘:逐Token路由与活跃参数量的工程真相

1. 项目概述&#xff1a;当“千亿参数”不再是个吓人的数字&#xff0c;而是一套精打细算的调度系统你肯定见过这类标题&#xff1a;“GPT-4拥有1.8万亿参数&#xff01;”——第一反应是震撼&#xff0c;第二反应是疑惑&#xff1a;我的显卡连加载一个7B模型都得开量化&#x…...

5分钟批量添加专业水印:让摄影作品自动展示相机参数

5分钟批量添加专业水印&#xff1a;让摄影作品自动展示相机参数 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具&#xff0c;后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils 还在为每一张照片手动添加相机参数…...

终极跨平台3D资产迁移革命:DazToBlender插件完整指南

终极跨平台3D资产迁移革命&#xff1a;DazToBlender插件完整指南 【免费下载链接】DazToBlender Daz to Blender Bridge 项目地址: https://gitcode.com/gh_mirrors/da/DazToBlender 你是否曾经在Daz Studio中精心创作了一个完美的3D角色&#xff0c;却因为无法在Blende…...