特定の Java アプリを分析して理解したいのですが、コール グラフが非常に役立つと思います。どうすれば生成できますか? 私はエクリプスを使用しています。
8 に答える
コールスタックの取得
1) アプリケーションをデバッグできる場合は、ブレークポイントを配置 (コードの左マージンをダブルクリック) し、停止するまで待ちます。そこにいない場合はデバッグ パースペクティブに移動し、コール スタック ビュー/パネルを開きます。コールスタックがあります:)
2) このスタック トレースをどこかに出力したい場合は、例外を使用します。
Exception aux = new Exception("I'm here"); // not for throwing!
aux.printStackTrace(); // if you want it in stdout
また
Exception aux = new Exception("I'm here"); // not for throwing!
StringWriter sw = new StringWriter();
aux.printStackTrace(new PrintWriter(sw));
String result = sw.toString(); // if you want it in a string
メソッド参照の取得
メソッドへのすべての参照を取得するには、右クリック、[参照]、[ワークスペース] の順にクリックします。現在開いているプロジェクトのすべての召しを検索します。非常に便利です。
アプリのプロファイリング
(プロファイラーのオプションに答えてくれた人に感謝します)
Eclipse TPTP はプロファイリングを提供します。
http://www.eclipse.org/tptp/home/project_info/general/whatisTPTP.php
私はまったく同じ問題を抱えていたので、Java-callgraphスイートのツールを作成しました。これを使用すると、プログラムとその依存関係の jar ファイルがあれば、動的 (ランタイム) コール グラフと静的コール グラフの両方を作成できます。
Netbeansプロファイラーはこれに非常に適しています!!
プロファイリング機能には、CPU、メモリ、スレッドのプロファイリング、および基本的なJVMモニタリングが含まれます...
jconsoleコマンド(jdkの一部)を使用することもできます
ローカルまたはリモートマシン上のJavaアプリケーションと仮想マシンを監視および管理できるグラフィカルコンソールツールを起動します。
Eclipse Profilerを使用すると、必要なものが得られる場合があります。
速くて汚い、新しい例外を作成し、スタックトレースを出力します。
Exception e = new Exception();
e.printStackTrace();
私は時々 Eclipse プロファイラーを使用します。
Thread.dumpStack() を使用すると、例外をスローしたり、デバッガーを使用したりせずに、現在のコール スタックを出力できます。これはコンソールに出力されます。
コードの「ホットスポット」に dumpStack() の呼び出しを配置して、アプリケーションがそのポイントに到達するまでに使用した呼び出しスタックを取得できます。