首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试时,看不到堆上的字符串。

调试时,看不到堆上的字符串。
EN

Stack Overflow用户
提问于 2016-06-21 15:18:21
回答 1查看 495关注 0票数 6

我正在尝试调试使用非常大的字符串的.NET应用程序中的内存问题。为此,我想设置一些断点,并在执行的各个阶段分析堆。

问题是:在使用Visual 2015的诊断工具时,似乎只有在启动应用程序时才会显示堆上的大型字符串,而不进行调试。这是不方便的,因为它阻止我设置断点。

问题:这是已知的bug吗?还是我不正确地使用诊断工具?

如何复制

  1. 使用以下代码创建一个新的C#控制台应用程序(.NET 4.6.1): 使用系统;使用System.Threading;类Program{静态空主(string[] args) { string test1 =新字符串(‘a’,100000000);Thread.Sleep(2000年);string test2 =新字符串(‘a’,100000000);Thread.Sleep(2000年);string test3 =新字符串(‘a’,100000000);Console.WriteLine(“完成”);Console.ReadLine();}}
  2. 激活诊断工具(Ctrl+Alt+F2)并使用调试(F5)启动应用程序。观察内存使用情况,并注意每个字符串分配都会增加200 by的内存使用量。在内存使用量达到最大值后,获取内存快照并查看堆。
  3. 注意,在堆中占用内存最多的对象类型是一些具有10 KB的图标。很明显,这是不正确的。

  1. 停止申请。使用诊断工具重新启动它,但不需要调试(Alt+F2)。选择“内存使用”并开始。
  2. 同样,请注意内存的增加,拍一张快照并查看它。
  3. 请注意显示了三个大字符串(应该是这样的)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-21 17:51:02

我找到了一种查看字符串的方法,即使在调试时也是如此。由于一些奇怪的原因,默认选项“仅限我的代码”在调试时隐藏这些字符串。

删除复选标记会使字符串可见。

显然,这只是调试时的一个问题。正如问题中的第二个屏幕截图所示,在“未调试”的情况下,即使打开了“我的代码”,也会显示字符串。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37948373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档