【问题标题】:View array in Visual Studio debugger? [duplicate]在 Visual Studio 调试器中查看数组? [复制]
【发布时间】:2010-11-01 15:10:14
【问题描述】:

是否可以在 Visual Studio 调试器中查看数组? QuickWatch 仅显示数组的第一个元素。

【问题讨论】:

  • 如果是 CArray,在 Watch Window 上写入 array.m_pData[pos] 或 array->m_pData[pos] (视情况而定)可以让您在 pos 位置看到 array 的内容!

标签: c++ visual-studio arrays view debugging


【解决方案1】:

我使用 Visual Studio 的 ArrayDebugView 加载项 (http://arraydebugview.sourceforge.net/)。

这似乎是一个早已死去的项目(但我正在考虑继续自己的项目),但该插件在 VS2010 中对于 C++ 和 C# 仍然可以很好地工作。

它有一些怪癖(选项卡顺序、模式对话框、没有关闭按钮),但它能够在图表中绘制数组的内容而不是弥补它。

2014 年 7 月编辑:我终于构建了一个新的 Visual Studio 扩展来替换 ArrayebugView 的功能。可在 VIsual Studio Gallery 中找到,搜索 ArrayPlotter 或前往http://visualstudiogallery.msdn.microsoft.com/2fde2c3c-5b83-4d2a-a71e-5fdd83ce6b96?SRC=Home

【讨论】:

  • 看起来不错但是不支持VS2013?? VSIXInstaller.NoApplicableSKUsException:此扩展不可安装在任何当前安装的产品上。支持的产品:Microsoft.VisualStudio.Pro 版本:[10.0] 版本:[11.0] 版本:[12.0] 版本:[14.0]
  • 应该可以!我是用VS2013开发的!您正在运行什么版本的 VS2013(服务包/版本)?如果您在 Extension Manager(在线部分)中搜索 ArrayPlotter,您会在其中看到它吗?
  • 漂亮的工具,在 VS2013 中对我来说很好用。
【解决方案2】:

如果您有一个大数组并且只想查看数组的一个子部分,您可以在监视窗口中输入它;

ptr+100,10

显示从 ptr[100] 开始的 10 个元素的列表。请注意,显示的数组下标将从 [0] 开始,因此您必须记住 ptr[0] 实际上是 ptr[100] 而 ptr[1] 是 ptr[101] 等等。

【讨论】:

    【解决方案3】:

    你可以试试这个 C++ 的小技巧。取给你数组的表达式,然后附加一个逗号和你想要查看的元素数量。扩展该值将显示元素 0-(N-1),其中 N 是您在逗号后添加的数字。

    例如,如果pArray 是数组,请在监视窗口中键入pArray,10

    【讨论】:

    • 难以置信的发现。但是它只适用于立即数,不允许算术或动态成员访问。
    • 请注意,您也可以在调试视图中使用强制转换。如果pArrayvoid* 类型,您可以键入(char*) pArray, 10,它将显示解释为字符的数组内容。
    • 无法在 Visual Studio 2008 Express 中执行此操作。如果我在 Watch Window 中添加表达式“a+1,2”,则会出现以下错误:“error: + cannot be executed on 'pArray' and '1'”。你用的是什么版本的VS?
    • 有人知道 Eclipse 中是否有类似的东西吗?
    • 我认为您可能正在使用 GDB 作为 Eclipse 中的调试器,在这种情况下,您正在寻找等效的语法 *pArray@10。我没有在 Eclipse 中尝试过,但它可以在命令行 GDB 中使用。
    【解决方案4】:

    您是否尝试查看动态分配内存的数组?如果没有,您可以通过将其放在调试器的监视窗口中来查看 C++ 和 C# 的数组,当您通过单击鼠标左键在监视窗口中的小 (+) 上展开数组时,其内容可见。

    如果它是指向动态分配数组的指针,要查看指针的 N​​ 个内容,请在调试器的监视窗口中键入“pointer, N”。注意,N 必须是一个整数,否则调试器会给你一个错误,说它不能访问内容。然后,左键单击出现的小 (+) 图标以查看内容。

    【讨论】:

      【解决方案5】:

      将鼠标光标悬停在数组名称上,然后将鼠标悬停在出现的小 (+) 图标上。

      【讨论】:

      • 对于 C++,这只会显示第一个元素
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多