[C++]debug介绍+debug时如何查看指针指向内存处的值
一、简介
预备工具和知识:使用使用VSCode使用Debug。
本文简介:本文将简要介绍debug中Continue,Step Over,Step Into和Restart的功能。并介绍如何在debug时查看动态内存地址(指针)的值;
二、Debug介绍
1. 设置断点:
- 设置普通断点:
使用鼠标在编辑框左侧左击即可设置一个断点,当在debug模式下运行时,当程序运行到此处会暂停。
如下图所示:

使用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,如下图所示:


然后在WATCH窗口右击p选择Edit Expression,将p修改为*pointer@size的格式,由于申请p时申请了5个int型变量的内存,因此size=5。那么我们将WATCH窗口中的p改为*p@5,如下图所示,即可查看p指向的内存处的值:

2. 使用*(type(*)[size])pointer将指针转为数组变量
我们也可以将指针p强制转为数组类型,然后查看p处内存的值。与前面类似,只不过此时需要将WATCH窗口里的p改为*(type(*)[size])pointer格式,对于int* p=int[5],我们需要改为*(int(*)[5])p,如下图所示,可以看到使用该方法也可查看p指向的内存处的值:
![使用*(type(*)[size])pointer格式查看指针处内存的值](https://img-blog.csdnimg.cn/direct/42389a0515d941e48a795ab902b2f7d8.png)
四、参考引用
[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:process //上一个拆出来的数是pre //还剩下rest需要去拆 //返回拆解的方法数 #include<iostream> using namespace std;//上一个拆出来的数是pre //还剩下rest需要去拆 //返回拆解的方法数 int process(int pre, int rest) {if(rest0) return 1;//因为后…...
【Qt Creator】跨平台的C++图形用户界面应用程序开发框架---QT
🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1.互联网的核心岗位以及职…...
KingbaseES数据库物理备份还原sys_rman
数据库版本:KingbaseES V008R006C008B0014 简介 sys_rman 是 KingbaseES 数据库中重要的物理备份还原工具,支持不同类型的全量备份、差异备份、增量备份,保证数据库在遇到故障时及时使用 sys_rman 来恢复到数据库先前状态。 文章目录如下 1.…...
【CV】视频图像背景分割MOG2,KNN,GMG
当涉及背景分割器(Background Subtractor)时,Mixture of Gaussians(MOG2)、K-Nearest Neighbors(KNN)和Geometric Multigid(GMG)是常用的算法。它们都用于从视频流中提取…...
使用 Python 简单几步去除 PDF 水印
推荐一个AI网站,免费使用豆包AI模型,快去白嫖👉海鲸AI 在处理 PDF 文件时,水印有时会影响文件的可读性或美观性。幸运的是,Python 提供了多种库来操作 PDF 文件,其中 PyMuPDF(又名 fitz…...
【香橙派 AIpro】OrangePi AIpro :教育、机器人、无人机领域的超级AI大脑,华为昇腾处理器驱动的AI开发板新标杆
【OrangePi AIpro:教育、机器人、无人机领域的超级AI大脑,华为昇腾处理器驱动的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设计的优秀软件,旨在帮助用户优化其设备的性能并提供清理和维护功能。以下是 CleanMyMac X的一些主要功能和特点: 1.系统性能优化:软件可以扫描和修复潜在的性能问题,包括无效的登录项、大文件…...
单片机通信协议(1):SPI简介
关于SPI SPI(串行外设接口)是板载设备间通信接口之一。它是由摩托罗拉公司(飞思卡尔半导体)推出的。由于其简单性和通用性,它被纳入各种外围设备中,并与飞利浦I2C总线并列。 SPI的三线或四线信号数量比IIC…...
免税商品优选购物商城,基于 SpringBoot+Vue+MySQL 开发的前后端分离的免税商品优选购物商城设计实现
目录 一. 前言 二. 功能模块 2.1. 登录界面 2.2. 管理员功能模块 2.3. 商家功能模块 2.4. 用户前台功能模块 2.5. 用户后台功能模块 三. 部分代码实现 四. 源码下载 一. 前言 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过…...
京准电子、NTP电子时钟系统(网络时钟系统)概述
京准电子、NTP电子时钟系统(网络时钟系统)概述 京准电子、NTP电子时钟系统(网络时钟系统)概述 时钟系统工作原理是由母钟接收GPS/北斗卫星的时间信息,母钟通过串口和NTP以太网接口为其他各系统提供统一的标准时间信号&…...
【常用的队列总结】
文章目录 队列的介绍Queue队列的基本概念与操作队列的基本概念 常见的队列介绍非阻塞队列LinkedList:ArrayDeque:PriorityQueue: 阻塞队列ArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueue DelayQueueSynchronousQueue 队列的介绍 Queue队列的基本概念与操作 在 …...
机器学习过拟合和欠拟合!看这一篇文章就够了 建议收藏!(上篇)
在机器学习中,有一项非常重要的概念,那就是:过拟合(Overfitting)和欠拟合(Underfitting)。 它们涉及到机器学习中常见的两种模型性能问题,分别表示模型在训练数据上表现得过于复杂或…...
关于阳光雨露外派联想的面试感想
最近在找工作,接到了一个阳光雨露外派联想的面试邀请。说实在的一开始就有不对劲的感觉。想必这就是大厂的自信吧,上就问能不能现场面试,然后直接发面试邀请。这时候我倒是没觉得有啥问题。 然后今天就去面试去了,住的比较偏&…...
深度神经网络介绍与实战
一、介绍 深度神经网络(Deep Neural Networks,DNNs)是一种强大的机器学习算法,被广泛应用于计算机视觉、自然语言处理、语音识别等领域。它是人工神经网络的一种扩展,包含多个隐藏层,每一层都由多个神经元组成。 与传统的机器学习算法相比,深度神经网络具有以下特点:…...
图解 Transformer
节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
