プログラムのメソッド呼び出しをツリーの枝として表示することにより、Java プログラムの単純な視覚化を作成したいと考えています。これは、プログラム自体が何をしているかをビジュアライゼーションに伝えることで非常に簡単に行うことができますが、私が変更したものだけでなく、任意のJavaメソッド/クラスでこれを実行できるようにしたいと考えています。
私が必要としているのは、プログラムが呼び出すメソッドと、そのメソッド内で呼び出されるメソッドなどを監視する機能です。明らかに、スタック トレースはまさにこの機能を提供します。
java.lang.NullPointerException
at MyClass.mash(MyClass.java:9)
at MyClass.crunch(MyClass.java:6)
at MyClass.main(MyClass.java:3)
そこで、監視したいプログラムをスレッドで実行し、そのスレッドのスタックを確認することを考えました。ただし、スレッド クラスは実際にはこれをサポートしていません。現在のスタックの印刷のみをサポートします。
ここで、もちろん、System クラスの PrintStream を単純に変更して、スレッドがそのスタックを PrintStream に出力することを考えましたが、これはちょっと間違っているように感じます。
これを行うより良い方法はありますか?使用できる既存のクラス/メソッドはありますか?
また、現在Javaソースコードをダウンロードして、スレッドクラスがスタックをどのように正確に出力するかを確認して、スレッドをサブクラス化し、独自のgetStack()メソッドでdumpStack()メソッドを模倣できるようにします。