ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

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

M
Matt Ball

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

https://i.stack.imgur.com/eWgSM.png


比所选解决方案更好的解决方案。谢谢!
很高兴指出,详细信息窗格是显示字符串内容的部分。
如何在日食开普勒中做到这一点?请帮忙
好消息是,当鼠标悬停在变量上、在“Inspect”窗口或“Expressions”视图中检查并在“Display”视图中显示值时,此更改似乎也会影响显示的长度。
我已经更新了正确的解决方案(之前接受的解决方案是真正旧 Eclipse 版本的唯一解决方案)。
U
Umberto

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


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

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

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

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


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

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

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

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

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

4) 干杯

https://i.stack.imgur.com/EWS69.png


这个图形解释真的很有帮助。 +1
S
Sonali

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

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

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

它将在控制台上打印值


P
Prince Champappilly

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

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


W
WesternGun

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

https://i.stack.imgur.com/TwjCv.png

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

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


u
user07

上述内容对我没有任何帮助,此外,我的 Eclipse 中的某些用户界面元素无法如所述找到。我正在使用 STS 4.3.1。

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

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

W
Wolfgang Fahl

https://i.stack.imgur.com/zMyNe.png

从控制台可以进行全长复制。