我必须了解一个不是由我编写的旧的大型java代码库。
要跟踪任何流,如果我知道在该流中调用的任何类,我抛出一个Exception
(如下所示)来获取到控制台的堆栈跟踪,以了解到目前为止调用的方法并继续
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
这在一定程度上对我有所帮助,但我对其他流程完全失明,我不知道该流程中的入口/中间/退出点。
我想知道是否有任何工具或机制可以告诉JVM当前正在执行什么?
答案 0 :(得分:0)
如果您想了解JVM中的哪些线程正在执行,您可以通过kill -3 pid
捕获线程转储并观察stdout,或者使用jconsole。您可以捕获几个彼此相距几秒钟的转储,这样您就可以感受到“当前”功能如何从一个地方移动到另一个地方。
如果要跟踪/记录并了解函数的进出值,可以使用Jackplay。