gpt4 book ai didi

java - 查找打印调用的来源

转载 作者:行者123 更新时间:2023-12-01 14:07:33 24 4
gpt4 key购买 nike

我正在调试一个 Java 应用程序,该应用程序在启动过程中帮助将其打印到控制台大约十几次:

java.awt.Dimension[width=140,height=122]

我想闭嘴,但我不知道它来自哪里。该应用程序很大,我对此了解不多。我可能可以通过在代码运行时单步执行代码来找到罪魁祸首,但我想知道有没有更聪明的方法?

最佳答案

我发现了有问题的打印语句(在 getPreferredSize() 方法中),但我也找到了更通用的解决方案。通过替换 System.out使用 System.setOut 理论上,有可能在打印语句发生时捕获它。

这并不完全可靠,因为:(1) 类 PrintStream有许多针对不同数据类型的打印方法,并且没有一个好的单一方法可以覆盖。进行实际输出的方法是私有(private)的。 (2) 如果需要,代码可以将消息拆分为单个字符,因此没有简单的方法来执行 String.contains()查看。

尽管如此,作为一种快速调试技巧,这似乎工作得很好:

System.setOut(new java.io.PrintStream(
new java.io.FileOutputStream(java.io.FileDescriptor.out)) {
@Override
public void print(String s) {
super.print(s);
if (s.contains("java.awt.Dimension")) {
throw new RuntimeException("Found you!");
}
}
});

关于java - 查找打印调用的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19879644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com