在 Eclipse 中调试时查看完整的字符串

Posted

技术标签:

【中文标题】在 Eclipse 中调试时查看完整的字符串【英文标题】:Viewing complete strings while debugging in Eclipse 【发布时间】:2011-02-21 20:52:28 【问题描述】:

在调试 Java 代码时,视图“变量”和“表达式”中的字符串只显示到一定长度,之后 Eclipse 显示“...”

有没有办法检查整个字符串? (这减轻了到处添加日志语句以进行调试的痛苦)

【问题讨论】:

您在哪里看到这种行为?调试器的哪一部分? 附带说明,这可能是用词不当,因为它可能不适合您,但是如果您使用诸如 java.util.logging 或 log4j 之类的调试库,则可以轻松地转换调试语句(具有不同级别的调试)到打印输出或日志文件中,它可能会给您带来在调试窗口中筛选字符串可能没有的优势。只是一个想法=) 【参考方案1】:

在变量视图中,您可以右键单击详细信息窗格(显示字符串内容的部分)并选择“最大长度...”弹出菜单。相同的长度适用于表达式检查器弹出窗口和其他几个地方。

【讨论】:

比所选的解决方案更好。谢谢! 很高兴指出Details Pane是显示字符串内容的部分。 如何在 Eclipse 开普勒中做到这一点?请帮助 好消息是,当鼠标悬停在变量上、在“检查”窗口或“表达式”视图中检查以及在“显示”视图中显示值时,此更改似乎也会影响显示的长度。 我已经更新了正确的解决方案(之前接受的解决方案是真正旧 Eclipse 版本的唯一解决方案)。【参考方案2】:

变量视图中,右键单击变量并选择更改值。如果您的变量很大,您必须等待几分钟(在这种情况下 Eclipse 不会响应命令),但最终 Eclipse 会完全显示您的变量。

【讨论】:

我只能看到"data:image/bitmap;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQE... (length: 22869)"。设置“最大长度”选项不起作用,也设置“更改值”。 @falko“最大长度”对我不起作用,“更改值”没问题(等待几秒钟后,取决于可变长度)。 至少在我的系统上,这相当比增加“最大长度”慢(见其他答案)。 eclipse 对你的想法不太满意。我已经尝试过了,现在我等了 30 分钟,等待 eclipse 的任何响应。Buuut:它似乎有效;)【参考方案3】:

如果你有一个很长的字符串,我会使用不同的策略:将它转储到文件中。我有一个我在显示视图中使用的代码 sn-p,它被评估为将数据转储到文件中。我使用 Commons IO,但您可以使用仅 JDK 的方法。

org.apache.commons.io.FileUtils.writeStringToFile(new java.io.File("<filename>"), <expression to evaluate>);

当然,您需要在类路径中使用 Commons IO JAR 才能使其正常工作。如果您不这样做,请使用 JDK 工作。

【讨论】:

很酷的解决方法。我个人会接受这个作为最佳答案。警告:必须为运行 JVM 的系统定义 ,这在远程调试时会有所不同,在这种情况下,文件将写入远程系统,而不是运行 eclipse 的工作站.【参考方案4】:

从 Eclipse 调试视图中查看字符串值的最佳方法如下。

1) 在 Eclipse 中切换到调试视图

2) 在变量窗格中选择所需的变量。

3) 右键单击​​显示值的变量窗格的显示区域,然后单击最大长度。在配置详细信息窗格中输入最大字符值。

4) 干杯

【讨论】:

这个图形解释真的很有帮助。 +1【参考方案5】:

当调试器到达你想要字符串值的位置时,只需键入一个 sysOut 语句

System.out.println("The value is : \n " + query);

选择上面的语句,右键->执行

它将在控制台上打印值

【讨论】:

【参考方案6】:

对于 eclipse 上基于 javascript 的调试,“更改值”方法和“最大长度”方法对我来说都失败了,将所需的对象添加到 watch(Expressions) 然后右键单击监视表达式以选择“加载完整值” 是唯一适合我的解决方案,但即使这会在输出中插入不需要的“\n”

注意 - 必须为“加载完整值”设置“最大长度”才能加载值直到最大长度(eclipse 中的默认值为 10000)。请参阅上面的答案以查看如何设置最大长度。

【讨论】:

【参考方案7】:

Eclipse Mars 中没有“maxLength”。而且,“更改值”仅适用于“变量”,而不适用于“表达式”,因此以上都不适用于我。

而且,表达式是在中间切掉的,而不是在结尾处。我猜他们改变了默认行为。

唯一对我有用的是扩展表达式名称列的宽度,然后单击表达式以将其全部选中以查看完整长度的内容。

【讨论】:

【参考方案8】:

上面没有任何东西对我有用,此外,我的 Eclipse 中的一些用户界面元素无法按描述找到。我正在使用 STS 4.3.1。

我需要的值非常大,它是一个巨大的 JSON 请求的一部分。解决方法是在 Eclipse Debug Shell 控制台中使用表达式并输出整个值的子字符串。由于您可以看到部分值,因此请检查它并使用最后几个文字作为输出字符串下一个块的位置。重复这种方法,直到得到你需要的:

String result = new String(reallyBigByteArrayValue, "UTF-8");
result.substring(result.indexOf("some-unique-text"));

【讨论】:

【参考方案9】:

在 Eclipse IDE 2020-09 中,右键单击“漂亮打印到控制台”。

从控制台可以进行完整长度的复制。

【讨论】:

以上是关于在 Eclipse 中调试时查看完整的字符串的主要内容,如果未能解决你的问题,请参考以下文章

在qt creator中调试时如何访问字符串变量的完整值?

Eclipse 在运行调试器时破坏了带有空格字符的程序参数

在Eclipse中调试时如何查看android SDK系统库的符号?

如何在 VC6 中查看 unicode CString 的值?

在 Eclipse 中查看变量时 Gdb 停止

eclipse使用技巧