問題タブ [javaagents]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - インストルメンテーションを使用して未処理の例外を記録する
インストルメンテーションを使用して Java アプリケーションをデバッグしようとしていました。現在のシステムの問題点は、
- ログステートメントはほとんど書かれていません
- 貧弱な例外処理
これにより、壊れた機能の根本原因を追跡することが非常に困難になりました。
この状況に対処するために、API を使用してツール、Java エージェントを開発しましInstrumentation
た。ログ ステートメントを挿入することができ、問題の半分は解決されました。
しかし、次の問題は、例外を記録することです。アプリケーションの実行中に例外がスローされるたびに、ツール レコードを拡張したいと考えています。javaassist
メソッドの API を使って ( addCatch
、 、を使用しinsertBefore
て)、 try-catch ブロックを挿入してみましinsertAfter
たが、ある程度効果があります。
ここで inserLog(..)
、メソッドは必要なログ ステートメントを挿入し、正常に動作しますが、例外が発生するとトランスフォーマーに到達しません。
しかし、問題は、一部のメソッドが内部で例外を処理することです (log/sysout がなくても)。
例えば:
NullPointerException
このコードは、の値がnullのときに食べsearch
ます。この例外とアプリケーションが何か他の理由で失敗することはわかりません。
最終的に私が欲しいのは、アプリケーションによってスローされた例外を記録するメカニズムです。以下の詳細を取得する必要があります
- 例外の種類
- 例外スタックトレース
- メソッドとクラス名
API があることは知っていますThread.setDefaultUncaughtExceptionHandler
が、Java インストルメンテーションでどのように使用するかはわかりません。アプリケーションにアクセスするソースがありません。
【アップデート1】
以下のリンクを使用するようretransformation
に指示されていることがわかりました。試して更新します
どんなガイダンスも非常に役に立ちます。
java - JUnitとaspectJが連携しない
私は読み込み時間の織り方でaspectJを使用しています。
Tomcat サーバーを実行するには、jvm 引数を追加する必要があります。
サーバーは完全に織りで動作します。
問題は、junit テストを実行しようとすると、すべてがウィービング エラーで失敗することです。サーバーにもjvm引数を指定しないと、ウィービングエラーが発生します。
そのため、junit テストを実行すると、エージェントが呼び出されない可能性が高くなります。
jvm引数でjunitを実行するように正確に設定するにはどうすればよいですか?
ありがとう
jvm - Gradle Application Plugin : -javaagent オプションを使用して jvm アプリケーションを実行するにはどうすればよいですか?
gradle (v1.10) でアプリケーション プラグインを使用して、アプリをパッケージ化して実行します。
そのため、アスペクト (aspectj) を使用する必要があり、アスペクト j コンパイラ (ajc) を使用したくありません。
gradle アプリケーションの実行スクリプトを微調整して、私のアプリを load-time-weaving で実行することは可能ですか? jvm オプションを提供するようなもの:
-javaagent:_path_to_aspectj_weaver.jar
eclipse - java.util.Logger を使用した JBOSS AS 7.1 での LogManager 例外
-javaagent
私はJavaアプリケーションを作成し、そのアプリケーションでjava.util.Loggerを初期化し、jboss AS 7サーバーとIllegalStateException
同じようにそのアプリケーションを実行しました.
上記のコード行を追加してjarを作成-javaagent
し、jboss as7サーバーで実行すると、次の例外が発生しました
そして、私は四分の一で検索し、サーバー定義の起動構成を開くという解決策を得ました。-logmodule org.jboss.logmanager
の前にプログラム引数に追加しますorg.jboss.as.standalone
。ただし、同じ例外が発生し、追加の警告が表示されます。ここに例外があります