Translated message

A translation of this page exists in English.

ABRT を使用した Java アプリケーションのデバッグ

更新 -

ABRT の概要

ABRT はバグ自動報告ツールです。このツールはアプリケーションの不具合を検出し、Red Hat エンジニアが解析に利用できる情報を可能な限り収集して Red Hat に提出します。

ABRT を使用する理由

ABRT が作成するレポートには、問題報告時に回答が必要な情報が多数含まれるため、問題解決に必要な時間を大幅に減らすことができます。

ABRT Java サポート

ABRT は、取得できない Java の例外を簡単に報告する JVM エージェントを提供します。このエージェントは、取得できる例外と取得できない例外を報告することができますが、デフォルトでは取得できない例外のみを報告します。その例外は、systemd-journal、syslog、および標準ファイルに報告されます。

取得する情報の種類

ABRT は、システムに発生した例外と詳細情報など、パッケージに関する一般的な例外に加え、バックトレースを取得します。このバックトレースは、標準の Java スタックトレースの範囲を少し大きくしたもので、数種類の Java ランタイム情報をシステムプロパティから取得します。

  • sun.java.command
  • sun.java.launcher
  • sun.boot.class.path
  • sun.boot.library.path
  • java.home
  • java.class.path
  • java.library.path
  • java.ext.dirs
  • java.endorsed.dirs
  • java.vm.version
  • java.vm.name
  • java.vm.info
  • java.vm.vendor
  • java.vm.specification.name
  • java.vm.specification.vendor
  • java.vm.specification.version

パフォーマンスの影響に関する質問

エージェントは、取得できない例外も報告できるようにするために、数種類の JVMTI イベントコールバックを登録する必要があります。また、イベントコールバック内の処理が、アプリケーション全体のパフォーマンスに少し影響を及ぼします。
パフォーマンスの低下は、6% (最低) から 17% (最高) になる可能性があります。

Java に対して ABRT を有効にする方法

JVM エージェントは、ユーザーリクエストの Java によりロードされた動的ライブラリーとなります。したがって、ABRT JVM エージェントは下のようなライブラリーを提供し、ローカルのファイルシステムに保存します。

/var/lib64/libabrt-java-connector.so

Java がそのライブラリーをロードするには、java コマンドに -agentpath 引数または -agentlib 引数を追加して実行する必要があります。-agentpath 引数ではエージェントライブラリーへの完全パスが使用でき、-agentlib 引数では $LD_LIBRARY_PATH で検索されるファイル名が使用できます。

ただし、この方法は、ABRT を有効にする点ではそれほど便利とは言えず、代わりに java-1.7.0-openjdk-headless を利用できます。

バイナリーの java はシェルスクリプトに置き換えられ、ABRT エージェントライブラリーが存在するかどうかを確認し、存在する場合はコマンドラインエージェントで以下を使用して Java を実行します。

-agentpath=/usr/lib64/libabrt-java-connector.so

ABRT JVM エージェントライブラリ-は abrt-java-connector パッケージが提供しているため、このパッケージをインストールすると、Java 例外を報告できるようになります。

$ yum install abrt-java-connector

ABRT Java エージェントを無効にする唯一の方法は、システムから abrt-java-connector パッケージを削除することです。

$ yum erase abrt-java-connector

/usr/share/doc/abrt-java-connector-$VERSION/README ファイルの abrt-java-connector の詳細は、パッケージに同梱されています。

Comments