私はバグを追跡するのに本当に苦労しています。どのメソッドが特定のメソッドを呼び出したかを知ることは非常に役立ちます。Javaから呼び出し階層を取得する簡単な方法はありますか?Javaはアプリのごく一部であるため、アプリ全体をEclipse / Net Beanでコンパイルして実行できないため、IDEデバッガーの呼び出し階層にアクセスできません。
4 に答える
Thread.currentThread().getStackTrace();
また
Exception ex = new Exception();
ex.printStackTrace();
かなり遅いですが、デバッグ目的には問題ありません。APIドキュメントはこちら。
Java はアプリの小さな部分であるため、Eclipse/Net Bean でアプリ全体をコンパイルして実行することはできないため、IDE デバッガーの呼び出し階層にアクセスできません。
アプリをまったく実行する必要はありません。Eclipse でプロジェクトを作成すると、組み込みの呼び出し階層ツールを使用して、メソッドを呼び出す可能性のあるすべての場所を見つけることができます。
トレードオフがあります。Call Hierarchy ツールは、メソッドが呼び出されたすべての場所を提供します。これは、すべての可能性を知りたい/知る必要がある場合に役立ちます。Neslson の提案はThread.currentThread().getStackTrace()
、この呼び出しのプログラムのプロセス中にメソッドが呼び出される場所を提供します。ニュアンスは、この呼び出し中にすべてのコード パスを実行するとは限らないということです。特定の動作が見られ、どのようにしてそこに到達したかを知りたい場合は、getStackTrace()
オプションを使用してください。
Javaのリモートデバッグ機能を使用してみましたか? まだ始めていない場合は、Google検索で始めましょう
最善の方法は、例外をスローし、すぐにキャッチしてスタック トレースを分析することです。
これが、Log4J が呼び出し元のメソッドをログに記録できる方法だと思います。