[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代码时,如何显示动态分配的指针数组

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

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

相关文章

连公司WiFi后,无法访问外网,怎么回事,如何解决?

文章目录 封面问题描述问题探究什么是DNS?分布式,层次数据库如何理解分布式?如何理解层次? 本地DNS服务器迭代查询,递归查询DNS缓存参考资料 封面 问题描述 从甲方项目组返回公司后,我习惯性连上公司WiFi&…

视频号小店去哪里找货源?最全货源渠道分享!

大家好,我是电商糖果 视频号小店因为是这两年电商行业新出来的黑马,吸引着不少商家入驻。 入驻了商家中很多都没有自己的货源渠道。 他们基本都是从无货源开始起步,后期通过积累资源,慢慢搭建属于自己的货源渠道。 可是渐渐的…

算法的时间与空间复杂度

算法是指用来操作数据、解决程序问题的一种方法。对于同一问题,使用不同的算法,也许最终结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。 那我们该如何去衡量不同算法之间的优劣呢?主要还是从算法所占用的【时间】和…

5.26机器人基础-空间描述和变换-总结

非目录 方便我找 重点 逆解 位姿矩阵的几何意义 实际坐标需要除以比例因子才能得到 比例因子的好处:在计算机的储存更加简单方便,例如x,y,x原先很大时,等比例改变 位姿坐标的齐次变换:左乘齐次坐标 从端点到末端&#xff0c…

集合竞价选股策略实战测试

2.3.2版本发布的集合竞价选股策略是网友吴PSYP提供的,团队按照策略实现的选股算法,最近半个月对策略进行的实战测试,从集合竞价选股开始,到股票收盘,收盘价格大于集合竞价价格,算作盈利,测试结果…

Vision Mamba论文阅读(主干网络)

这几天被Mamba刷屏了,又由于本人是做视觉方面任务的,固来看看mamba在视觉上的应用。 今天分享的是Vision Mamba: Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model 论文网址:https://arxiv.or…

火山引擎“奇袭”阿里云

图片|电影《美国队长3》剧照 ©自象限原创 作者丨程心 编辑丨罗辑 大模型价格战,已经不是什么新闻。 从OpenAI发布GPT-4o,将API价格下调50%,并宣布面向普通用户免费开始,就标志着大模型的竞争从性能进入到了成本…

【机器学习】期望最大化(EM)算法

文章目录 一、极大似然估计1.1 基本原理1.2 举例说明 二、Jensen不等式三、EM算法3.1 隐变量 与 观测变量3.2 为什么要用EM3.3 引入Jensen不等式3.4 EM算法步骤3.5 EM算法总结 参考资料 EM是一种解决 存在隐含变量优化问题 的有效方法。EM的意思是“期望最大化(Exp…

Aloha机械臂的mujoco仿真问题记录

今天在测试ACT代码时,遇到了仿真中的机械臂无法摆放正确的姿势来抓去红色方块。 后来经过测试,发现应该是python包的版本问题有误,下面记录下正确的包版本: 官方给出的包: conda create -n aloha python3.8.10 conda…

vue3 ts问题 找不到模块“@/views/home/index.vue”或其相应的类型声明。

1. 找不到模块“/views/HomeView.vue”或其相应的类型声明 今天帮同事看了一个问题,他尝试用vitevue3tspinia创建项目,结果刚上来就遇到这么一个问题 2. 解决办法 出现这个问题的原因就是:ts只支持导出导入模块,但是vue不是模块…

leetcode 1631. 最小体力消耗路径 二分+BFS、并查集、Dijkstra算法

最小体力消耗路径 题目与水位上升的泳池中游泳类似 二分查找BFS 首先,采用二分查找,确定一个体力值,再从左上角,进行BFS,查看能否到达右下角,如果不行,二分查找就往大的数字进行查找&#xff…

web及网络基础图文详解

目录 1.1TCP/IP 协议族 1.2TCP/IP 的分层管理 1.3TCP/IP通信传输流 1.4 与 HTTP 关系密切的协议 : IP、TCP 和 DNS (1)负责传输的 IP协议(网络层) (2)确保可靠的 TCP协议(传输层&#xff…

一行代码实现UI拖拽的效果

演示 先来看效果吧! 实现方式 1.首先创建一个你想拖动的UI图片 2.创建一个C#的脚本 3.编写控制脚本(代码按我的敲就行) 付上代码片段 public void OnDrag(PointerEventData eventData){transform.position eventData.position;} 4.添加脚…

产品经理-需求分析(三)

1. 需求分析 从业务的需要出发,确定业务目的和目标,将业务需求转为产品需求 1.1 业务需求 业务需求 业务动机 业务目标 就是最根本的动机和目标成果,通过这个需求解决特定的问题 1.2 产品需求 产品需求 解决方案 产品结构 产品流程…

等了10年,终于迎来RTX5/RTX4全家桶开源,开源,开源! 且免费商用

我们的V4, V5, V6 ,V7开发板都配套了大量的RTX4, RTX5教程和案例,从2015年发布首版RTX4内核教程以来,已经整整10年了。 1、制作这个RTX教程和案例,其实也承受了很大的压力,因为只有RTX内核是免费商用的,中间件并不免费…

AUTOMATIC1111/stable-diffusion-webui/stable-diffusion-webui-v1.9.3

配置环境介绍 目前平台集成了 Stable Diffusion WebUI 的官方镜像,该镜像中整合如下资源: GpuMall智算云 | 省钱、好用、弹性。租GPU就上GpuMall,面向AI开发者的GPU云平台 Stable Diffusion WebUI版本:v1.9.3 Python版本:3.10.…

数据结构(四)串

2024年5月26日一稿(王道P127) 定义和实现

【计算机毕业设计】基于SSM+Vue的新能源汽车在线租赁管理系统【源码+lw+部署文档】

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,新能源汽车在线租赁当然也不能排除在外。新能源汽车在线租赁是以实际运用为开发背景,运用软件工程开发方法&…

ChatGPT-4o 实战 如何快速分析混淆加密和webpack打包的源码

ChatGPT-4o 几个特点 一个对话拥有长时间的记忆,可以连续上传文件,让其分析,最大一个代码文件只能3M,超出3M的文件,可以通过split-file可以进行拆分 其次ChatGPT-4o可以生成文件的下载链接,这有利于大文件的…

Vue3实战笔记(37)—粒子特效登录页面

文章目录 前言一、粒子特效登录页总结 前言 上头了&#xff0c;再来一个粒子特效登录页面。 一、粒子特效登录页 登录页&#xff1a; <template><div><vue-particles id"tsparticles" particles-loaded"particlesLoaded" :options"…