我想通过将程序的方法调用显示为树的分支来编写Java程序的简单可视化。这可以通过让程序本身告诉可视化界面正在做什么来完成,但我希望能够通过任何Java方法/类来完成,而不仅仅是我修改过的方法。从Java内部监控Java
我需要的是能够观察程序调用的方法以及在该方法内调用哪些方法等等。显然,堆栈跟踪提供的正是这种功能:
java.lang.NullPointerException
at MyClass.mash(MyClass.java:9)
at MyClass.crunch(MyClass.java:6)
at MyClass.main(MyClass.java:3)
所以我想关于有我想监视在一个线程中运行,然后看看这线程的堆栈程序。但是,线程类并不真的支持这一点。它只支持打印当前的堆栈。
现在我,当然,简单地改变系统类的PrintStream因此线程将打印的纸叠装入我的PrintStream,但这种感觉一种错误的想法。
有没有更好的方法来做到这一点?是否有任何预先存在的类/方法可以使用?
此外,我正在下载Java源代码,以检查线程类是如何打印其堆栈的,以便我可以创建子类线程并使用我自己的getStack()方法模拟dumpStack()方法。
我知道它'感觉错了',但它不是 - 可以重定向System.out(写入文件的PrintStream)我最终编写了自己的控制台,之前我已经完成了像这样的事情现在要知道所有这些都在libs中,无论是在java.util中还是在其他地方:如果你可以在任何地方获得dumpStack(),将它转储到任何你想要的地方:这就是它的目的。 – 2009-10-24 07:42:11