プログラムの実行中にJavaメソッドの値を確認する方法を理解する必要があります。実行中のコードを変更できず、コードの実行をブロックしたくありません(したがって、Eclipseでデバッグモードを使用することはできません)。プロファイラーなどに、特定のメソッドが呼び出されるたびに受け取るすべてのパラメーターを出力するように指示したいだけです。
これを達成する方法はありますか?
ありがとう:)
この場合、AOPを使用する必要があります。メソッドをカスタムコードでラップし、そのすべての呼び出しをログに記録します。あるプロジェクトでは、プロファイリングの目的でメソッドの実行時間をログに記録するためにAspectJを使用しました。
デコレータのようなものを使用できるかもしれません。次のように、分析するメソッドを持つクラスがあるとします。
public class Example {
public void doSomething(parameters) {
doSomething;
}
}
このクラスを拡張して、メソッドをプロファイリングするための動作を追加できます。だからあなたはこれを行うことができます:
public class FilePrinterExample extends Example{
@Override
public void doSomething(parameters) {
for each parameters do
//print on file or what you want
super.doSomething(parameters);
}
}
私はいくつかの擬似コードを使用します、そして私が明確であったことを望みます。
JProfilerはそれを行うことができます。目的のメソッドのメソッドトリガーを作成し、それに「メソッド呼び出しアクションの印刷」を追加します。
より高い柔軟性が必要な場合、このスクリーンキャストは、実行中のアプリケーションから内部状態を抽出するために「インターセプタースクリプトの実行」を使用する方法を示しています。
免責事項:私の会社はJProfilerを開発しています。