Visual Studio 调试系列7 查看变量占用的内存(使用内存窗口)
在调试期间,“内存”窗口显示应用程序正在使用的内存空间。
调试器窗口(如监视窗口、自动窗口、局部变量窗口和快速监视对话框)显示变量,这些变量存储在内存中的特定位置。“内存”窗口向您显示整体图片。内存视图便于检查在其他窗口中显示不好的大数据块(例如缓冲区或大字符串)。
内存窗口不限于显示数据。它显示内存空间中的所有内容,包括数据、代码和未分配内存中的随机垃圾位。
内存窗口不可用于脚本或SQL调试。这些语言不能识别内存概念。
要启用内存窗口,必须在“工具>选项”(或“调试>选项”)>调试>常规中选择“启用地址级调试”。
打开“内存”窗口
-
请确保启用地址级调试中选择工具 > 选项(或调试 > 选项) >调试 > 常规。
-
开始调试通过选择绿色箭头,按F5,或选择调试 > 开始调试。
-
下调试 > Windows > 内存,选择内存 1,内存 2,内存 3,或内存 4。 (某些版本的Visual Studio产品/服务只有一个内存窗口。)
计算机的地址空间很大,您可以通过滚动内存窗口轻松地丢失您的位置。
较高的内存地址显示在窗口的底部。要查看更高的地址,请向下滚动。要查看较低的地址,请向上滚动。
您可以使用拖放或在“ 地址”字段中输入地址,立即转到“ 内存”窗口中的指定地址。“ 地址”字段接受字母数字地址和计算地址的表达式,例如。e.User.NonroamableId
要强制立即重新评估“ 地址”字段中的表达式,请选择“ 自动重新评估自动”图标的圆角箭头。
默认情况下,“ 内存”窗口将“ 地址”表达式视为实时表达式,在应用程序运行时将其重新评估。例如,实时表达式可用于查看指针变量触及的内存。
要使用拖放移动到内存位置:
-
在任何调试器窗口中,选择内存地址或包含内存地址的指针变量。
-
将地址或指针拖放到“ 内存”窗口中。该地址随后出现在“ 地址”字段中,“ 内存”窗口将调整为在顶部显示该地址。
要在“地址”字段中输入内存位置,请移至内存位置:
- 在“ 地址”字段中键入或粘贴地址或表达式,然后按Enter键,或从“ 地址”字段的下拉列表中选择它。“ 内存”窗口调整为在顶部显示该地址。
按下回车键,如下图:
但是个人看不懂里面具体的内容。
默认情况下,内存内容以十六进制格式显示为1字节整数,窗口宽度决定显示的列数。您可以自定义“ 内存”窗口显示内存内容的方式。
要更改内存内容的格式:
- 在“ 内存”窗口中单击鼠标右键,然后从上下文菜单中选择所需的格式。
要更改“内存”窗口中的列数:
- 选择“ 列”字段旁边的下拉箭头,然后选择要显示的列数,或者根据窗口宽度选择“ 自动”进行自动调整。也可以手动输入数字。
如果您不希望在应用程序运行时更改“ 内存”窗口的内容,则可以关闭实时表达式评估。
要切换实时评估:
-
在“ 内存”窗口中单击鼠标右键,然后在上下文菜单中选择“ 自动重新评估”。
您可以隐藏或显示“ 内存”窗口顶部的工具栏。隐藏工具栏时,您将无法访问“ 地址”字段或其他工具。
要切换工具栏显示:
- 在“ 内存”窗口中单击鼠标右键,然后在上下文菜单中选择“ 显示工具栏 ”。工具栏显示或消失,具体取决于其先前的状态。
在本机代码应用程序中,您可以将注册名称用作实时表达式。例如,您可以使用堆栈指针跟随堆栈。
要通过内存跟踪指针:
-
在“ 内存窗口地址”字段中,输入当前范围内的指针表达式。根据语言的不同,您可能需要取消引用它。
-
按Enter键。
使用诸如Step之类的调试命令时,“ 地址”字段和“ 内存”窗口顶部显示的内存地址会随着指针的更改而自动更改。
成在管理,败在经验;嬴在选择,输在不学! 贵在坚持!
个人作品
BIMFace.SDK.NET
开源地址:https://gitee.com/NAlps/BIMFace.SDK
系列博客:https://www.cnblogs.com/SavionZhang/p/11424431.html
系列视频:https://www.cnblogs.com/SavionZhang/p/14258393.html
技术栈
1、Visual Studio、.NET Core/.NET、MVC、Web API、RESTful API、gRPC、SignalR、Java、Python
2、jQuery、Vue.js、Bootstrap、ElementUI
3、数据库:分库分表、读写分离、SQLServer、MySQL、PostgreSQL、Redis、MongoDB、ElasticSearch、达梦DM
4、架构:DDD、ABP、SpringBoot、jFinal
5、环境:跨平台、Windows、Linux、Nginx
6、移动App:Android、IOS、HarmonyOS、微信小程序、钉钉、uni-app、MAUI
分布式、高并发、云原生、微服务、Docker、CI/CD、DevOps、K8S;Dapr、RabbitMQ、Kafka、RPC、Elasticsearch。
欢迎关注作者头条号 张传宁IT讲堂,获取更多IT文章、视频等优质内容。
出处:www.cnblogs.com/SavionZhang
作者:张传宁 技术顾问、培训讲师、微软MCP、系统架构设计师、系统集成项目管理工程师、科技部创新工程师。
专注于企业级通用开发平台、工作流引擎、自动化项目(代码)生成器、SOA 、DDD、 云原生(Docker、微服务、DevOps、CI/CD);PDF、CAD、BIM 审图等研究与应用。
多次参与电子政务、图书教育、生产制造等企业级大型项目研发与管理工作。
熟悉中小企业软件开发过程:可行调研、需求分析、架构设计、编码测试、实施部署、项目管理。通过技术与管理帮助中小企业实现互联网转型升级全流程解决方案。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如有问题,可以通过邮件905442693@qq.com联系。共同交流、互相学习。
如果您觉得文章对您有帮助,请点击文章右下角【推荐】。您的鼓励是作者持续创作的最大动力!