15

特定の Java アプリを分析して理解したいのですが、コール グラフが非常に役立つと思います。どうすれば生成できますか? 私はエクリプスを使用しています。

4

8 に答える 8

14

コールスタックの取得

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

于 2009-12-30T22:43:30.613 に答える
10

私はまったく同じ問題を抱えていたので、Java-callgraphスイートのツールを作成しました。これを使用すると、プログラムとその依存関係の jar ファイルがあれば、動的 (ランタイム) コール グラフと静的コール グラフの両方を作成できます。

于 2012-05-18T08:06:00.877 に答える
4

Netbeansプロファイラーはこれに非常に適しています!!

プロファイリング機能には、CPU、メモリ、スレッドのプロファイリング、および基本的なJVMモニタリングが含まれます...

jconsoleコマンド(jdkの一部)を使用することもできます

ローカルまたはリモートマシン上のJavaアプリケーションと仮想マシンを監視および管理できるグラフィカルコンソールツールを起動します。

于 2009-12-30T23:03:58.640 に答える
3

Eclipse Profilerを使用すると、必要なものが得られる場合があります。

于 2009-12-30T22:36:39.300 に答える
2

速くて汚い、新しい例外を作成し、スタックトレースを出力します。

Exception e = new Exception();
e.printStackTrace();
于 2009-12-30T22:38:12.310 に答える
1

私は時々 Eclipse プロファイラーを使用します。

于 2009-12-30T22:38:13.213 に答える
1

Thread.dumpStack() を使用すると、例外をスローしたり、デバッガーを使用したりせずに、現在のコール スタックを出力できます。これはコンソールに出力されます。

コードの「ホットスポット」に dumpStack() の呼び出しを配置し​​て、アプリケーションがそのポイントに到達するまでに使用した呼び出しスタックを取得できます。

于 2011-02-14T04:37:28.230 に答える