2012-03-26 41 views
3

我正在使用eclipse编写java代码。如果我正在调试一些代码,我可以设置一个断点并随着代码遍历每个函数或者我可以回溯。我也可以看看调用层次结构或引用来获取想法。但这还不够。多线程基于时间的调用层次结构

我希望有一些基于时间的可视化,说明每个线程沿着这个过程正在做什么......让我们说“点A”(按下界面上的按钮)到“点B”(得到结果)。我想知道按什么顺序调用了哪些类/方法。我想要一个很好的方法来可视化一种方法产生的输出是什么样的,另一种方法是引发一个新的过程......等等。

分析器是这种类型的可视化唯一可用的东西吗?基本上我想要创建一个动作图或流程图。有一些插件或应用程序可以产生这样的东西吗?

编辑:这是我在想什么的例子......至少在视觉上: essmodel.sourceforge.net/index.html 它具有这样的代码是导致一些流动。但是我认为这只是一个什么类可以导致其他类的静态映射,以及可用的输入/输出选项。我想根据特定情况映射流程。

+0

您如何看待AOP,像aspectj?拦截你关心的方法调用,并记录你想要的。 – Ron 2012-03-30 15:59:43

回答

0

我相信使用探查器将是您的最佳选择。你熟悉VisualVM吗?它附带了JDK(在JDK的bin目录中查找“jvisualvm.exe”),并且在配置正确的情况下能够自动分析本地虚拟机以及远程计算机。它确实给出了线程正在运行的代码和他们正在花费的代码,所以我认为你可以很容易地从中做出你需要的东西。最重要的是,它是免费的:)

正如我所说的,局部分析是一件轻而易举的事。您只需运行JVisualVM.exe独立版,它会自动查找在本地计算机上运行的所有Java进程(您可以从VisualVM提供的菜单中选择它们)。如果要远程配置文件,设置以下VM参数不管它是你正在运行:

-Dcom.sun.management.jmxremote.port=[0-65535] 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 

然后VisualVM的范围内,使用遥控器的JVM上运行的机器的主机名和你配置的端口在上面的第一个VM参数中。

+0

visualVM只有累计的调用堆栈信息,没有按时间顺序排列的信息,而不是问题要求的时间分辨视图。 – 2012-03-27 09:06:36

+0

我在想像更像这样的东西: http://essmodel.sourceforge.net/index.html 它有一些代码流向的地方。但是我认为这只是一个什么类可以导致其他类的静态映射,以及可用的输入/输出选项。我想根据特定情况映射它。 – user701273 2012-03-30 15:46:18

3

JProfiler提供了这样一个观点,这就是所谓的“呼叫追踪”:

enter image description here

重要的是要非常小心,以免记录到的数据量限制你的过滤器是非常重要的。

免责声明:我公司开发JProfiler。