由于我在维护团队的项目中工作,我经常处理相同的异常,这些异常经常发生(在同一个地方),但堆栈跟踪中的信息量不足。这导致的情况是,即使我经常对他们无能为力,因为原因不明。
所以我想知道是否有一些工具可以收集更多关于上下文的信息(可能是通过某种方式连接JVM)。
这是我应该使用这些人的地方: jinfo,jhat,jmap,jsadebugd,jstack?
或许还有一些更方便/更强大/(称之为)的方式?
我期待的是什么:
答案 0 :(得分:1)
堆栈跟踪为您提供发生问题的确切代码行以及(希望)有用的消息来解释问题,应足以识别问题。
通常,如果不是,最好的办法是修改有问题的区域中的代码,以便为您提供更多信息。这可能是在发生异常的行之前记录变量的状态,在所有情况下(不仅在发生异常时),或者增加异常发生时提供的信息量。
或者,如果发生异常的行上发生了多个事情,您可以将代码分成多行,这将导致所有后续异常中的行号更有用,例如,如果你有这样一句话:
Foo myFoo = myBar.getBaz().getFoo();
并且您在该行上获得NullPointerException
,您可能无法确定myBar
是否为空,或者其getBaz()
方法是否返回null。如果你把它分成:
Baz myBaz = myBar.getBaz();
Foo myFoo = myBaz.getFoo();
下次遇到相同的NullPointerException
时,行号将为您提供更好的线索,了解什么是null。