如何在 VC6 监视窗口中获取变量的完整字符串值?

Posted

技术标签:

【中文标题】如何在 VC6 监视窗口中获取变量的完整字符串值?【英文标题】:How can I get full string value of variable in VC6 watch window? 【发布时间】:2008-09-19 17:44:49 【问题描述】:

我想在 VC6 监视窗口中获取 char[] 变量的完整值,但它只显示截断版本。我可以从调试内存窗口复制值,但其中包含混合行的十六进制和字符串值。肯定有更好的方法吗??

【问题讨论】:

【参考方案1】:

对于大字符串,您几乎会被内存窗口卡住 - 工具提示最终会被截断。

幸运的是,内存窗口很容易从中获取数据 - 我倾向于以 8 字节块的形式显示它,因此它易于管理,找到您的字符串数据并将该批次剪切并粘贴到空白窗口中,然后使用 alt+drag 来选择列并删除十六进制值。然后从字符串的底部开始并不断向上翻页/删除(换行符)以构建您的字符串(我使用宏来表示该位)。

一旦你得到长字符串,我认为没有更好的方法了。

【讨论】:

这是我现在使用的方法,但我要为其他人添加一个警告:当您粘贴为文本并进行编辑时,您需要考虑截断字符串但被转换为的嵌入空值的可能性不可打印的字符。这些,再加上内存中的“垃圾”,会使字符串看起来比实际更长。【参考方案2】:

推来推去你可以把手表放进去

给定

char bigArray[1000];

观看:

&bigArray[0]
&bigArray[100]
&bigArray[200]
...

或更改要在字符串中查找的位置的索引...

它很笨重,但它在过去对我有用。

【讨论】:

【参考方案3】:

我没有VC6了,所以我不能尝试。不知道有没有用,或许你可以进入

(char*)textArray;

在监视窗口中。

可能是更好的解决方案:VS2008 会自动以您想要的方式显示文本。并且有一个免更改的VS2008 Express Edition,据我所知,可以用来开发商业应用程序。您甚至可以尝试继续使用 VC6 进行开发,仅使用 VS2008 进行调试。使用 VS2003 是可能的。大约 5 年前,我不得不维护一个使用 VC6 开发的应用程序。我一直使用 VC6 进行开发,但调试时我使用了 VS2003。

【讨论】:

强制转换不起作用,因为问题是 VC6 截断了监视窗口中的字符串。例如您的帖子将显示为“我没有...”,除了打开内存窗口之外,没有其他方法可以获取字符串的其余部分。 VC2008 express 的想法应该可行。【参考方案4】:

我见过的唯一技巧就是看字符串 然后是字符串 + 50, + 100 等。

Eugene Ivakhiv 为 msvc 6 写了一个 addin,让您可以在编辑框中显示完整的字符串。

【讨论】:

【参考方案5】:

VC6 有一个可爱的插件,叫做XDebug。它添加了一个用于查看不同类型字符串的对话框。它对我很有用。

【讨论】:

我刚刚安装了这个,效果很好!在 Windows 7(可能还有其他较新的操作系统)上,使用插件随附的安装说明时会出现复杂情况。您必须以管理员权限运行 cmd 并使用命令regsvr32 \path\XDebug.dll。然后按照安装说明进行操作。如果您不先执行此操作,则插件无法注册。我使用直接链接而不是指向难以阅读的博客的链接编辑了答案。【参考方案6】:

也许,习惯于创建日志文件,直接将输出写入文件,然后在你最喜欢的文本编辑器中调出。

【讨论】:

以上是关于如何在 VC6 监视窗口中获取变量的完整字符串值?的主要内容,如果未能解决你的问题,请参考以下文章

调试器如何只看到值而不是变量的内存地址

VS 怎么进行断点调试?

vs2010 如何查看内存内容

Delphi应用程序的调试监视变量

在 Visual Studio 的监视窗口中自动刷新 [重复]

VS2010 监视变量变化