8

次の機能を備えたJVMの現在の状態のスナップショットを取得できる何かが(Javaの世界に)存在するかどうか疑問に思っていました:

  • 例外がスローされている間に実行してください。
  • ローカル変数、メソッドの引数などをキャプチャします。
  • ソースコードの状況をIDEで抽出または再現するために使用できる便利なファイルに入れます。

最初の 2 つの機能が必要です (3 つ目の機能はすばらしいでしょう)。また、本番環境での使用に適している必要があります (したがって、デバッガーについてはありません)。

これを尋ねる前に、私は WWW を (可能な限り) 検索し、いくつかの指針を見つけました。

  • Cajoon Interceptor : Dzone の投稿で述べたように、3 つの要件を満たすパッシブ JVM エージェントです。しかし、これには 2 つの欠点があります。料金を支払わなければならないことと、サイトがダウンしていることです (支払う機会がない可能性があります)。
  • AviCode Intercept Studio : Cajoon の .NET に相当するもの。いくつかの洞察を与えるだけです。
  • JavaFrame : わかりました、ツイートですが、問題ないように見える JVM エージェントのソース コード (MIT ライセンスに基づく) を含む利用可能な SVN リポジトリを指しています (試してみます)。

それで、多分私は存在しない解決策を探していますか?緊急ではありませんが、私はあるプロジェクトについてこのアイデアを思いつきました。この「未知の」(?) パスを探索して、何か現実のものを得ることができれば素晴らしいと思います。

JVM エージェントであることは明らかなようです (たとえば、JVMTI からの例外イベント)。

最後に、ウィキペディアの例外処理の記事から次の段落を強調します。

Java や .NET などのランタイム エンジン環境には、ランタイム エンジンに接続するツールが存在し、対象の例外が発生するたびに、例外がスローされた時点でメモリに存在していたデバッグ情報を記録します (コール スタックとヒープ)。値)。これらのツールは、自動例外処理またはエラー インターセプト ツールと呼ばれ、例外の「根本原因」情報を提供します。

それがアイデアです。誰かが私に洞察を与えてくれることを願っています。あるいは、将来、誰かがこの謙虚な投稿に触発されることを願っています:)

ありがとう!

4

4 に答える 4

2

JavaFrameを見てみると、良い出発点のようです。Apache Ant をインストールantし、javaframe ディレクトリで実行し、テスト スイート (test ディレクトリ内) を起動します。

LD_LIBRARY_PATH=../build/native/ java -agentlib:frameintrospect -classpath ../build/classes/:. org.thobe.frame.Test

ローカル変数は取得しませんが、試行します。だから、私が言ったように、それは出発点になることができます. その使用法についてさらに詳しく知りたいと思っていますが、時間もドキュメントもありません (JavaFrame という名前のプロジェクトがたくさんあります) のは悪い状況です。

いつかまたできる日が来るかもしれません。はい、また。Cajoon があり、有望で輝いていましたが、その Web サイトはダウンしており、試してみるべきダウンロード可能な jar の痕跡はありません。

みんなに感謝!

PD .:参考までに、調査中に見つけたいくつかのリンク:

于 2008-12-18T19:21:02.900 に答える
1

多分それはAspectJで行うことができますか?

于 2008-12-17T13:30:47.147 に答える
1

自動化された使用ログに関して NetBeans が行った作業を調べることができます: http://wiki.netbeans.org/UsageLoggingSpecification

ローカル変数のダンプについては、bajafresh4life が言及したようなデバッガーを使用するだけでよいと思います。

于 2008-12-17T01:07:52.437 に答える
0

これが実稼働環境で実行可能かどうかはわかりませんが、Omniscientデバッガーがあります。

デバッガーが「時間的に逆行」する可能性がある場合はどうなりますか?それでデバッグが簡単になりますか?すべての変数の割り当てを記録するだけで、本質的にこれを行うことができます。これは、全知のデバッグの根底にある考え方です。驚くべき部分は、非常に大きなプログラムをこの方法でデバッグできることです。Ant、JUnit、デバッガー自体です。

http://www.lambdacs.com/debugger/

于 2008-12-16T20:46:02.950 に答える