在VisualStudio调试器中使用内存窗口和查看内存分布

在VisualStudio调试器中使用内存窗口和查看内存分布

调试模式下内存窗口的使用

在调试期间,“内存”窗口显示应用使用的内存空间。调试器窗口(如“监视”、“自动”、“局部变量”和“快速监视”对话框 )会显示存储于内存中特定位置的变量。 “内存”窗口显示总体概况。 内存视图对于检查大片的数据(如缓冲区和大的字符串)很方便,这些内容在其他窗口中显示得不太好。

打开“内存”窗口与其他调试器窗口一样,“内存”窗口仅在调试会话期间可用。

在“内存”窗口中四处移动计算机的地址空间很大,在“内存”窗口中滚动可能会轻易地失去位置。较高的内存地址显示在窗口的底部。 若要查看较高的地址,请向下滚动。 若要查看较低的地址,请向上滚动。

通过使用拖放操作或在“地址”字段中输入地址,可以立即在“内存”窗口中转到指定地址。 “地址”字段接受字母数字地址和计算结果为地址的表达式,如 e.User.NonroamableId。

若要强制立即重新计算“地址”字段中的表达式,请选择圆角箭头“ 自动重新计算”图标。

默认情况下,“内存”窗口将“地址”表达式视为实时表达式,它们会在应用运行时重新计算 。 实时表达式可能十分有用,例如,可用于查看指针变量所涉及的内存。

若要使用拖放操作移动到内存位置,请执行以下操作:

在任一调试器窗口中,选择内存地址或选择包含内存地址的指针变量。

将地址或指针拖动到“内存”窗口中。 该地址随后会出现在“地址”字段中,“内存”窗口将调整为在顶部显示该地址。

若要通过在“地址”字段中输入内存位置来移动到该位置,请执行以下操作:

在“地址”字段中键入或粘贴地址或表达式,然后按 Enter,或从“地址”字段中的下拉列表中选择它。 “内存”窗口将调整为在顶部显示该地址。

使用“监视”和“快速监视”窗口监视变量

利用内存窗口查看函数调用堆栈的变化

参考链接:

在调试器中查看变量的内存 - Visual Studio | Microsoft Docs https://docs.microsoft.com/zh-cn/visualstudio/debugger/memory-windows?view=vs-2019

对变量设置监视 - Visual Studio | Microsoft Docs https://docs.microsoft.com/zh-cn/visualstudio/debugger/watch-and-quickwatch-windows?view=vs-2019

查看内存分布

这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。

先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存布局,如果写上

/d1 reportSingleClassLayoutXXX(XXX为类名),则只会打出指定类XXX的内存布局。

/d1 reportAllClassLayout

/d1 reportSingleClassLayout

测试代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#include

class Dempty {

public:

Dempty() {}

~Dempty() {}

void print() const { printf("empty class \r\n"); }

};

int main()

{

int size = sizeof(Dempty);

printf("%d \r\n", size);//空类的大小为1字节

}

/d1 reportSingleClassLayoutDempty

Visual Studio 命令行编译C和C++程序

参考链接:演练:在命令行上编译本机 C++ 程序 | Microsoft Docs

https://docs.microsoft.com/zh-cn/cpp/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line?view=vs-2019

visual studio 查看内存f分布:cl -d1reportSingleClassLayout

PS D:\ufile\arena\visualstudio\ConsoleApplication1\ConsoleApplication1> cl -d1reportSingleClassLayoutDempty .\ConsoleApplication1.cpp

用于 x86 的 Microsoft (R) C/C++ 优化编译器 19.27.29111 版

版权所有(C) Microsoft Corporation。保留所有权利。

ConsoleApplication1.cpp

class Dempty size(1):

+---

+---

Microsoft (R) Incremental Linker Version 14.27.29111.0

Copyright (C) Microsoft Corporation. All rights reserved.

/out:ConsoleApplication1.exe

ConsoleApplication1.obj

PS D:\ufile\arena\visualstudio\ConsoleApplication1\ConsoleApplication1>

参考链接:

visual studio cl -d1reportSingleClassLayout查看内存f分布 - osc_fzp57c02的个人空间 - OSCHINA - 中文开源技术交流社区 https://my.oschina.net/u/4341677/blog/3498447

使用Visual Studio查看C++类内存分布_Enjoy Coding-CSDN博客 https://blog.csdn.net/ywcpig/article/details/52550584

Visual Studio中如何查看变量内存_lucky_fly的专栏-CSDN博客 https://blog.csdn.net/lucky_fly/article/details/103336741

Visual Studio程序调试如何查看堆栈_lucky_fly的专栏-CSDN博客 https://blog.csdn.net/lucky_fly/article/details/103336238

visual studio debug内存查看方法_lauyun的博客-CSDN博客 https://blog.csdn.net/lauyun/article/details/105580798

在VisualStudio调试器中使用内存窗口和查看内存分布的更多相关文章

vs2013 使用vs调试器,发现调试器显示的数据错误。查看内存,发现内存是正确的。

有可能只是调试器的问题,程序可以正常运行的! 网上没找到此种情况解释.感觉有可能是那里堆被破坏了.

在Visual Studio调试器中显示Unreal的数据类型的值

转自:https://blog.csdn.net/witton/article/details/5977766 在Unreal引擎中大量使用了自定义的数据类型如:FName,FString,TArra ...

用DebuggerDisplay在Visual Studio的调试器中定制类的显示方式

博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:用DebuggerDisplay在Visual Studio的调试器中定制类的显示方式.

在 Visual Studio 调试器中指定符号 (.pdb) 和源文件

查找并指定符号文件和源文件:指定符号加载行为.使用符号和源服务器上:加载符号自动或在要求. 内容 查找符号 (.pdb) 文件 查找源文件 查找符号 (.pdb) 文件 说明 在之前的 Vis ...

自定义Visual Studio调试器中的对象显示方式

你有没有盯着调试器窗口中的对象,并希望你可以通过其他类型的东西来查看这些对象?我当然有!扩展项目以确定每个人的身份可能会非常快速.理想情况下,通过特定的属性值快速定位它们会很棒.对我们来说幸运的是,V ...

@清晰掉 GDB调试器中的战斗机

GDB 的命令很多,本文不会全部介绍,仅会介绍一些最常用的.在介绍之前,先介绍GDB中的一个非常有用的功能:补齐功能.它就如同Linux下SHELL中的命令补齐一样.当你输入一个命令的前几个字符,然后 ...

关于调试器中int3断点引发异常的思考

INT3断点 INT3断点是利用0Xcc指令实现的,cpu在执行0xcc指令时会引发断点异常调试器会捕捉这个异常. INT3断点引发的异常属于陷阱型异常,在执行完0xcc指令后eip指向下一条指令.但 ...

【查看内存】Linux查看内存使用情况(二)

Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...

【查看内存】Linux查看内存使用情况(一)

用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况 ...

随机推荐

Centos Linux下载rpm软件包(基础环境篇)-从零到无

--时间:2020年10月23日 --作者:飞翔的小胖猪 一.概述 1.1 前言 很多生产环境往往是独立的一张网络不与互联网相通,经常会出现的问题就是应用在部署的时候无法安装配套的依赖包.导致很简单 ...

【ASP.NET Core】绑定到 CancellationToken 对象

负责管理 HTTP 请求上下文的 HttpContext 对象有一个名为 RequestAborted 的属性.据其名思其义,就是可用来表示客户端请求是否已取消. 果然,它的类型是 Cancellat ...

YUV相关积累

关于yuv 格式-Semi Planar和Planar https://www.cnblogs.com/welen/articles/5454315.html

JAVA 包装类 Wrapper

包装类 针对八种基本数据类型相应的引用类型-包装类 有了类的特点,就可以调用类中的方法. 除了Boolean和Character其他的包装类的父类是Number 继承关系图: Character Bo ...

LeetCode-045-跳跃游戏 II

跳跃游戏 II 题目描述:给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. 假设你总是可以到 ...

QQ音乐官方定制精简版v1.3.6 纯净无广告

介绍 近期腾讯推出了QQ音乐简洁版.顾名思义,QQ音乐简洁版就是官方精简后的版本,没有内置任何广告.完全专注于听歌,不存在直播.K歌.短视频等花里胡哨的内容.如有违规,请删删.. 结尾附pc端 QQ音 ...

Flutter ChartSpace:通过跨端 Canvas 实现图表库

基于Flutter 的图形语法库,通过跨端 Canvas ,将基于 Javascript 的图形语法库 ChartSpace 扩展至 Flutter 端 作者:字节跳动终端技术--胡珀 背景 数据平台 ...

矩池云上安装及使用Milvus教程

选择cuda10.1的镜像 更新源及拷贝文件到本地 apt-get update cp -r /public/database/milvus/ / cd /milvus/ cp ./lib/* /us ...

解决矩池云GPU显存未释放问题

很多用户反馈说终止程序之后,显存依然被占用,这里我们提供了两种解决方案,帮助用户解决这个问题. nvidia-smi查看 我们可以先用如下命令 nvidia-smi 查看一下当前GPU进程情况. _ ...

JDK 线程池

JDK 线程池 线程池参数 在JDK的4种线程池之前, 先介绍一下线程池的几个参数 corePoolSize 线程池的核心线程数量, maximumPoolSize 线程池的最大线程数量 keepAl ...

相关推荐

发票左上角佅形是什么意思
365bet足球实时动画

发票左上角佅形是什么意思

📅 08-07 👁️ 9006
文件粉碎后如何恢复?
365bet足球实时动画

文件粉碎后如何恢复?

📅 10-05 👁️ 9729
微商的下一步发展在哪里?海豚汇为微商团队嫁接模式助活血
爱彩365彩票官方app下载

微商的下一步发展在哪里?海豚汇为微商团队嫁接模式助活血

📅 01-25 👁️ 6565
笔记本风扇怎么拆 更换笔记本电脑风扇
爱彩365彩票官方app下载

笔记本风扇怎么拆 更换笔记本电脑风扇

📅 07-08 👁️ 7147
中国各省份白酒消费情况解析(二) 本系列文章系统梳理中国主要省份白酒市场情况及特征,本文为系列文章第二篇,上篇链接如下:中国各省份白酒消费情况解析(一)(...
拨打电话一直提示通话中是怎么回事?解决方法!
爱彩365彩票官方app下载

拨打电话一直提示通话中是怎么回事?解决方法!

📅 07-04 👁️ 4009
淘宝店铺旺旺号在哪里看?店铺旺旺号是不是店铺名?
爱彩365彩票官方app下载

淘宝店铺旺旺号在哪里看?店铺旺旺号是不是店铺名?

📅 09-12 👁️ 2875
缝纫机十大品牌排行榜(电脑缝纫机品牌排行榜前十名)
365bet足球实时动画

缝纫机十大品牌排行榜(电脑缝纫机品牌排行榜前十名)

📅 08-11 👁️ 1912
雷诺怎么样:品牌评测,了解雷诺车型的品质和口碑