Javaアプリのデバッグ及びTomcatやJBoss、Weblogic、JRunなどでのリモートデバッグ方法

2010/12/17 16:36Update
TAGS: Java | JPDA | デバッグ | Tomcat | JBoss | Weblogic | JRun

Javaアプリに何らかのエラーやExceptionが発生した場合、実際のソースを見て解析することは一つの手ですが、ロジックが複雑であり、ソースを見ても分からなかった場合、デバッグ機能を利用したほうがずっと直観的であり、便利です。

Javaでは、Java Platform Debugger Architecture (JPDA)というアーキテクチャでJavaデバッグ機能を全面サポートします。

バックエンドのデバッグ機能を有効にする方法


Javaでは、デバッグ機能を利用するのは、JVM内のデバッグ機能を有効にしなければなりません。
方法としては、
1)Java デバッガ jdb でJavaアプリを起動する
 例:java -Xdebug -Xrunjdwp:transport=dt_shmem,address=jdbconn,server=y,suspend=n

2)Javaコマンドに-Xdebug オプションを設定する
 例:java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n myApp
などがあります。



デバッグの手順


1)バックエンド:デバッグされるJavaアプリをデバッグ機能有効で起動する。実行環境(TomcatやJBoss、Weblogic、JRun、Javaアプリ、Java Appletなど)側に-Xdebug などのオプションでJVM内のデバッグ機能を有効にする
 設定例:
 Tomcatのデバッグモードの起動オプション:
     set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8080
 JBossのデバッグモードの起動オプション:
     set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y
 WebLogicのデバッグモードの起動オプション:
     set JAVA_OPTS= -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n
 
 ※address(ポート)は変更可能で、適当で設定すればよい。
 ※稼動するOSにあわせて起動するスクリプトを修正してください。
 ※その他サーバでもリモートデバッグしたい場合、ほとんど同じような設定でデバッグ機能付けで起動できます。
 
2)フロントエンド:デバッグする(Eclipse, Netbean, JBuilderなど)側はデバッグされる側のJVMに接続(jdb -attach)する
 これらのIDEでは、グラフィカルな Java デバッガーのフロント・エンドが既に含まれており、ちょっとした設定で、簡単にデバッグ機能でアプリを起動したり、デバッグJVMに接続したりデバッグを行うことができます。
 詳細について、参考資料のリンクをご参照ください。
 

Eclipseでのデバッグ


1)Javaアプリケーションのデバッグの起動方法
  ①Javaソースにブレークポイントを設定する
  ②Run>Debug As>Java Application    (実行>デバッグ>Javaアプリケーション)
2)リモートデバッグの起動・設定方法
  ①バックエンド側でデバッグ機能を有効で起動する(上の紹介した方法をご参照)
  ②Javaソースにブレークポイントを設定する
  ③Run>Debug Configurations>Remote Java Application:ダブルクリックでリモートデバッグの設定を新規作成
   (実行>構成およびデバッグ>リモートJavaアプリケーション)
   ※Connection Type:Standard(Socket Attach)    (接続タイプ:標準(ソケット接続))
   ※Host:リモートサーバのIPアドレス    (ホスト:)
   ※Port:リモートサーバのポート    (ポート:)
  ④Debug ボタンを押下    (デバッグ ボタン)
  ⑤ブラウザーなどでデバッグしたいのページのURLをアクセス
  ※これで、ブレークポイントで実行が中断され、デバッグモードに入ります。

参考資料


jdb - Java デバッガ
Eclipse を使ってリモートで Java アプリケーションをデバッグする
リモートデバッグ - EclipseWiki
Sysdeo Eclipse Tomcat Launcher plugin - EclipseからTomcatを制御するためのプラグイン
 ※Eclipse上で動作するTomcatプラグインで、Eclipseから簡単にTomcatサーバをデバッグモードで起動及び接続する機能を提供します。
Java Platform Debugger Architecture

有关作者
Syboos.jp編集長システム設計や開発、保守運営などを行ってます。オープンソース技術に興味があります。

Sponsored Link


Comments

用户名 (required)

Email (will not be published) (required)

URL

Evaluation