【问题标题】:See memory adress of a variable when debugging in Visual Studio?在 Visual Studio 中调试时查看变量的内存地址?
【发布时间】:2020-02-12 09:22:21
【问题描述】:

我必须使用 Visual Studio(Professional 2017)进行开发,而不是我最喜欢的 IDE。调试时(特别是停止指向),我使用面板 Locals(通过 Debug > Windows > Locals) 显示运行时变量的值。我也希望能够在该面板中看到实际的内存地址(例如,确定我是否正在使用同一个对象,或者估计对象使用了多少内存)——这是我在其他 IDE 中的一个功能.

是否有任何技巧或插件可以在 Visual Studio 运行时查看变量的内存地址?

参考文献

【问题讨论】:

  • 您可以在监视窗口中添加一个变量监视,并在其前面加上地址运算符&
  • @MatthewWatson 请你详细说明一下这个技巧好吗?
  • 在“观看”窗口中,点击添加要观看的项目,然后输入&,然后输入您想要的地址的局部变量的名称,然后按进入。 (您也可以在“快速观看”窗口中执行此操作。)
  • 或者在即时窗口中,或者在快速查看窗口中,指针到处都是指针
  • @MichaelRandall 请问那个快速监视窗口在哪里?

标签: c# visual-studio debugging ide visual-studio-debugging


【解决方案1】:

.NET 是一个垃圾收集环境。执行 GC 时,对象会在内存中移动以合并可用空间。因此,当 GC 收集发生时,直接查看内存将查看完全不同的对象。除非您直接在 GC 中工作或分析内存转储(没有执行,因此没有 GC),否则直接查看内存是没有帮助的。

要查看特定对象——无论引用可能引用它——使用“对象 ID”。在 Locals、Autos 和 Watch 窗口中,右键单击引用并选择“Make Object Id”。这会生成一个序列符号$1, $2, ... 1. 用于注释值列中对该对象的任何引用的显示; 2. 可以直接在调试器中使用以查看该对象(包括在其中执行的代码片段内的即时窗口中:例如,我本周早些时候使用的?local.Prop.Equal($2.Prop))。有关示例,请参阅 https://docs.microsoft.com/en-us/visualstudio/debugger/watch-and-quickwatch-windows?view=vs-2019#bkmk_objectIds

【讨论】:

  • 我应该更直接地阐述我的目的:我想知道 对象的层次结构,如果这是正确的措辞 - 哪些副本在记忆。
  • @B--rian 我不知道 VS 中有任何内容允许“查找对此对象的所有引用”(WinDBG/SOS 可能会提供)。也许,在问题中,您可以解释为什么要查找所有参考资料。将显示对象 ID,然后您查看引用是否是同一个对象。 (我知道我所说的对象层次结构是什么意思,但在这种情况下这是没有意义的。)
【解决方案2】:

如果您真的想查看变量的内存,您可以在 Watch 和 Intermediate 窗口中使用 &

例如如果您有一个变量foo&foo 会显示地址,但正如另一个答案中所述,这可能会由于在 GC 期间压缩移动对象而改变。

【讨论】:

    【解决方案3】:

    打开内存窗口

    确保在工具 > 选项(或调试 > 选项)> 调试 > 常规中选择启用地址级调试。

    通过选择绿色箭头、按 F5 或选择“调试”>“开始调试”来开始调试。

    在 Debug > Windows > Memory 下,选择 Memory 1、Memory 2、Memory 3 或 Memory 4。(Visual Studio 的某些版本仅提供一个内存窗口。)

    或参考以下链接: https://docs.microsoft.com/en-us/visualstudio/debugger/memory-windows?view=vs-2017 Visual Studio, See variable's memory address in watch window

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      • 2019-01-24
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多