好的,所以我有一个非常大的 Java 项目,我已经从事了多年(如果你必须知道的话,一个游戏)。
不幸的是,一条神秘的消息已经开始打印。无论我搜索的时间长短,我都无法确定消息的位置。
我知道您可以覆盖 println 方法,并且我很好奇是否可以将某种调试信息附加到正在打印的消息中?就像打印它的行或文件一样?我试着在谷歌上搜索这个,但它太详细了,我找不到答案。
更糟糕的是,这个信息非常模棱两可。它只是“-1”。
至少我现在知道使用适当的记录器而不是简单的 println()。
在这种情况下,您可以在 ide 中使用条件断点。这是 ide 的一个非常有用的功能,但并不总是广为人知。
您设置了一个断点,并且您希望它仅在某些情况下暂停应用程序,在这种情况下,println 方法的参数是您的“神秘的 ufindable 字符串”
在Intelllij IDEA的情况下,这看起来像这样:
你可以做
new Exception().printStackTrace()
或类似的,而不抛出创建的异常来获取当前执行点的完整堆栈跟踪。而且没有必要扔。您可以将它们保存到列表中以供以后处理。
这看起来像是来自 ArrayIndexOutOfBoundsException 的消息。在此类异常上添加断点。尝试这个:
String[] arr = new String[0];
try{
System.out.println(arr[-1]);
}catch (Exception e){
System.out.println(e.getMessage());
}