如何找到正在打印的神秘信息?

时间:2013-11-14 22:06:15

标签: java println

好的,所以我有一个非常大的Java项目,我已经工作多年了(游戏,如果你必须知道)。

不幸的是,一条神秘的信息已经开始被打印出来。无论我的搜索时间长短,我都无法确定消息的位置。

我知道你可以覆盖println方法,我很好奇是否可以在打印的消息上附加某种调试信息?就像从或许它打印的行或文件?我尝试在Google上搜索此内容,但它过于详细,我无法找到答案。

更糟糕的是,这个消息非常含糊不清。它只是“-1”。

Atleast我现在知道使用合适的记录器而不是简单的println()。

3 个答案:

答案 0 :(得分:6)

在这种情况下,您可以在ide中使用条件断点。这是一个非常有用的ide特征,并不总是众所周知。

你设置一个断点,你希望它只在某种条件下暂停应用程序,在这种情况下,println方法的参数是你的'神秘的ufindable字符串'

Intelllij IDEA 的情况下,这将是这样的:

enter image description here

答案 1 :(得分:2)

你可以做到

 new Exception().printStackTrace()

或类似的,没有抛出创建的异常来获取当前执行点的完整堆栈跟踪。而且没有必要抛弃它。您可以将事件保存到列表中以供以后处理。

答案 2 :(得分:-1)

这看起来像是来自ArrayIndexOutOfBoundsException的消息。在此类异常上添加断点。试试这个:

String[] arr = new String[0];
try{
    System.out.println(arr[-1]);
}catch (Exception e){
    System.out.println(e.getMessage());
}