【问题标题】:How to debug array of char with more than 210 elements如何调试具有超过 210 个元素的 char 数组
【发布时间】:2016-06-09 20:04:44
【问题描述】:

我正在使用 Visual Studio Express 2013 for Windows Desktop,我想查看变量的值。

这看起来很简单:要么打开“Locals”窗口并检查该值,要么将其添加到“Watch”窗口,然后可以读取该值。

确实如此,但我的变量是一个char数组(typedef char T_BufCommandLine [32768];),包含210多个字符,我只看到前210个。之后是三个点(“...”),只是提到数组还没有完成。

我知道我可以扩展这个变量的值,但是结果可读性不是很好,复制其中的一部分是完全不可能的。

所以我的问题是:有人知道我如何将包含 210 多个字符的 char 数组的值可视化为一个没有“...”的字符串吗?

【问题讨论】:

  • 标准方式是puts()它。 ;-) 对不起,无法抗拒。不,不知道 MSVC 方式,别管我,我是一个巨魔,现在又爬回我的石头下。
  • 尝试将其保存到文件并使用matlab可视化它?

标签: c arrays visual-studio watch locals


【解决方案1】:

在调试器的断点处,将鼠标悬停在变量上,然后单击“镜子”图标旁边的向下箭头;选择“文本可视化工具”。

或者,使用内存窗口:

【讨论】:

  • 我猜用这个选项第一个0x00 会停止可视化。
  • @LPs - 当然可以。如果您想要原始字节,请使用内存窗口。
  • 非常感谢,我从未听说过“文本可视化器”。这确实解决了我的问题。
【解决方案2】:

一个简单的技巧是将您想要的元素复制到一个单独的变量中(或分配一个指向该元素的指针)并在分配后立即添加一个断点以窥探它的值。

【讨论】:

    【解决方案3】:

    如果您想继续使用监视窗口,您可以明确指定起始地址。毕竟,它只是一个普通的旧数组。调试器知道如何进行指针运算。要查看前 210 个元素之外的值,只需执行以下操作:T_BufCommandLine+210,500

    您也可以使用即时窗口,但您需要准确地告诉它数组的长度。类似:?T_BufCommandLine[0],32768 会给你一个巨大的转储。

    【讨论】:

      猜你喜欢
      • 2010-10-27
      • 2022-10-04
      • 2011-09-27
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      相关资源
      最近更新 更多