2012-03-26 9 views
3

私はJavaコードを書くためにEclipseを使用しています。私はいくつかのコードをデバッグしている場合、私はブレークポイントを設定し、コードがそれぞれの関数を通過するか、バックトラックすることができます。私はまた、コールの階層やアイデアを得るための参照を見ることができます。しかしそれだけでは不十分です。マルチスレッド時間ベースの呼び出し階層

各スレッドがプロセスに沿って行っていることを時間ベースで視覚化したいと思っています...「ポイントA」(インターフェイス上のボタンを押す)を「ポイントB」としましょう結果を得る)。どのクラス/メソッドがどのような順序で呼び出されたかを知りたい。私は、ある方法からどのような出力が来ているのかを視覚化し、新しいプロセスを起動する別の方法などに行く良い方法を望んでいます。

このタイプのビジュアライゼーションではプロファイラだけが利用できますか?基本的には、アクションダイアグラムまたはフローダイアグラムを作成します。このようなものを生成するプラグインやアプリはありますか?

編集:ここでは、少なくとも視覚的に...私が考えているものの例である: essmodel.sourceforge.net/index.html それはコードがリードしている場所のいくつかの流れがあります。しかし、これは、クラスが他のクラスにつながるものと、どのような入出力オプションが利用できるかという静的なマップに過ぎないと思います。特定のケースに基づいてフローをマップしたいと思います。

+0

あなたはaspectjのようなAOPについてどう思いますか?気になるメソッド呼び出しをインターセプトし、必要なものをログに記録します。 – Ron

答えて

0

私はプロファイラを使用することが最良の選択肢になると信じています。あなたはVisualVMに精通していますか?これはJDK(JDKのbinディレクトリ内に "jvisualvm.exe"があります)が付属しており、ローカル仮想マシンを自動的にプロファイリングすることができます。そして、実行中のスレッドと実行中のコードについて、かなり滑らかな概要を示しているので、必要なものを簡単に実行できると思います。そして、何よりも、無料です:)

私が言ったように、ローカルプロファイリングは簡単です。 JVisualVM.exeをスタンドアロンで実行するだけで、ローカルマシン上で実行されているすべてのJavaプロセスが自動的に検出されます(VisualVMが提供するメニューからそれらを選ぶことができます)。 VisualVMの内すると

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

は、リモートJVMが実行されているマシンのホスト名とあなたが設定したポートを使用する:あなたがリモートでプロファイルする場合、それはあなたが実行していることは何でもするために、以下のVM引数を設定上記の最初のVM引数で。それは多くのデータを記録しないようにするために非常に慎重にフィルタを制限することが重要です

enter image description here

+0

visualVMには、質問が要求した時間解決されたビューではなく、時系列の情報なしでコールスタック情報が累積されています。 –

+0

私は次のようなより視覚的なものを考えていました。 http://essmodel.sourceforge.net/index.html コードがどこに流れているのか、いくつかの流れがあります。しかし、これは、クラスが他のクラスにつながるものと、どのような入出力オプションが利用できるかという静的なマップに過ぎないと思います。特定のケースに基づいてマップしたいと思う。 – user701273

3

JProfilerは、このようなビューを提供しています、「コールトレーサ」と呼ばれています。

免責事項:私の会社はJProfilerを開発しています。

関連する問題