好的,所以我有一个非常大的Java项目,我已经工作多年了(游戏,如果你必须知道)。
不幸的是,一条神秘的信息已经开始被打印出来。无论我的搜索时间长短,我都无法确定消息的位置。
我知道你可以覆盖println方法,我很好奇是否可以在打印的消息上附加某种调试信息?就像从或许它打印的行或文件?我尝试在Google上搜索此内容,但它过于详细,我无法找到答案。
更糟糕的是,这个消息非常含糊不清。它只是“-1”。
Atleast我现在知道使用合适的记录器而不是简单的println()。
答案 0 :(得分:6)
在这种情况下,您可以在ide中使用条件断点。这是一个非常有用的ide特征,并不总是众所周知。
你设置一个断点,你希望它只在某种条件下暂停应用程序,在这种情况下,println方法的参数是你的'神秘的ufindable字符串'
在 Intelllij IDEA 的情况下,这将是这样的:
答案 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());
}