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

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

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

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

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

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

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

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

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

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

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

  • 在“地址”字段中键入或粘贴地址或表达式,然后按 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 <iostream>
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调试器中使用内存窗口和查看内存分布的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. H5点击不同按钮跳转显示不同分页

    预期效果(页面1): 点击后显示对应的内容(页面2): HTML(页面1): 添加 onclick 跟 data-index     <!-- 3我的订单 -->     <div ...

  2. 听说:分布式ID不能全局递增?

    大家好,我是[架构摆渡人],一只十年的程序猿.这是实践经验系列的第十一篇文章,这个系列会给大家分享很多在实际工作中有用的经验,如果有收获,还请分享给更多的朋友. 前面有篇文章我们讲到用时间来代替自增I ...

  3. 爬虫之爬取B站视频及破解知乎登录方法(进阶)

    今日内容概要 爬虫思路之破解知乎登录 爬虫思路之破解红薯网小说 爬取b站视频 Xpath选择器 MongoDB数据库 爬取b站视频 """ 爬取大的视频网站资源的时候,一 ...

  4. 系统整理qt笔记1

    main.cpp #include "mywidget.h" #include <QApplication>//包含一个应用程序类的头文件 #include <i ...

  5. petite-vue源码剖析-v-if和v-for的工作原理

    深入v-if的工作原理 <div v-scope="App"></div> <script type="module"> i ...

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

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

  7. javascript订阅模式浅析和基础实例

    前言 最近在开发redux或者vux的时候,状态管理当中的createStore,以及我们在组件中调用的dispatch传递消息给状态管理中心,去处理一些操作的时候,有些类似我们常见到订阅模式 于是写 ...

  8. CF375D题解

    昨天教练布置的莫队作业,然后一看我老早就用 DSU on tree 切了,来补题解( 题意 静态树询问子树中,同一种元素的数量不小于 \(k\) 的元素有多少种. 莫队做法 容易观察到子树在 \(\r ...

  9. 关于http,测试面试官最爱问哪些?

    http和https的区别是什么? HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol),而 HTTPS 的全称是 Hypertext Transfer Prot ...

  10. 【基础】tail命令查看日志

    一.tail 命令介绍 tail 命令可以将文件指定位置到文件结束的内容写到标准输出. 如果你不知道tail命令怎样使用,可以在命令行执行命令tail --help就能看到tail命令介绍和详细的参数 ...