Java JDWPのデバッグ

<< 目次を表示 >>

ページ位置:  プログラムの動作解析 > ビルドとデバッグ > 動作解析の設定 > デバッグ >

Java JDWPのデバッグ

Javaのデバッグには2つの方法があります。1つは Java Virtual Machine Tools Interface (JVMTI) と呼ばれる方法で、もう1つがJava Debug Wire Protocol (JDWP)です。Enterprise Architectデバッグでは、JDWPを利用することで、32ビット環境や64ビット環境にある仮想マシン(VM)のJavaアプリケーションをデバッグすることができます。

 

必要条件

  1. Enterprise Architect JDWPデバッガは、'JDWP'オプション付きで起動したJVMとのみ通信可能です。コマンドラインでの例は次の通りです。

java -agentlib:jdwp=transport=dt_socket,address=localhost:9000,server=y,suspend=n -cp "c:\java\myapp;%classpath%" demo.myApp "param1" "param2"

  1. VMがデバッガにアタッチしていないこと
  2. Enterprise ArchitectとEclipseの両方から同時にデバッグを行うことはできません。

 

 

動作解析の設定

項目

説明

デバッガ

Java (JDWP) を選択して下さい。

実行

この項目を選択してください。

既定のディレクトリ

これらの情報は参照されませんので、設定不要です。

アプリケーションパス

コマンドラインの引数

実行前にビルド

コンソールを表示

調査用メッセージの表示

追加設定の内容 (Connection)

Port

ADBやその他の手段で、Android上の仮想マシン(VM)に接続するためのポートを指定します。

jdb - The Java Debugger (https://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/jdb.html)

Host

リモート側のマシンを指定します。 (既定値: localhost )

もし、Androidがネットワークマシン上のエミュレータデバイスで動作している場合には、そのマシン名を指定します。

既定の設定では、Enterprise Architectが実行されているのと同じマシン(localhost)の、指定されたポートに接続します。

Source

Javaのclasspathにあたるディレクトリを指定します。

対象のディレクトリが複数ある場合には、セミコロンで区切って設定します。以下は指定の例です。

 

c:\myapp\src;c:\myserver\src

 

少なくとも1つのディレクトリを指定しなければなりません。

デバッガがブレークポイントに達すると、このSourceとして指定されたパスから、該当のソースファイルを探索します。

Logging

ログ機能を有効にするかどうかを指定します。

設定可能な値は、true,false,1,0,yes,no です。

Output

ログファイルの出力先となるファイルを、フルパスで指定します。

指定されたディレクトリが実行時に存在しない場合には、ログファイルは出力されません。

このログファイルには、通常はデバッガとVMの間でやりとりされるバイトコードが含まれます。

Platform

「Java」 を指定します。

 

 

デバッグのためのポート設定

Enterprise Architectのデバッガは、同時に1つのVMのみがデバッグできます。また、VMとの通信のために、1つのポートを利用します。

 

 

ローカルマシンでのデバッグの場合

Enterprise Architectと、デバッグ対象の仮想マシンが同じマシンに存在する場合には、仮想マシンを起動する際にJDWP転送を有効にして起動する必要があります。詳細については、Oracleが提供するJava Platform Debugger Architecture (JPDA)のドキュメントをご覧下さい。

 

実行時の一例は以下の通りです。

 

java -agentlib:jdwp=transport=dt_socket,address=localhost:9000,server=y,suspend=n

-cp "c:\samples\java\myapp;%classpath%" samples.MyApp "param1" "param2"

 

 

この例では、動作解析の設定では host = localhost および port = 9000 と指定しています。

 

 

リモートマシンでのデバッグの場合

Enterprise Architectが実行しているマシンと、VMが動作するマシンが別の場合には、ローカルマシンでの設定に加えて追加の設定が必要です。同様に、仮想マシンを起動する際にJDWP転送を有効にして起動する必要があります。

 

実行時の一例は以下の通りです。

 

java -agentlib:jdwp=transport=dt_socket,address=9000,server=y,suspend=n

-cp "c:\samples\java\myapp;%classpath%" samples.MyApp "param1" "param2"

 

この例では、addressの設定としてマシン名を指定していません。この結果、どのマシンからの接続も受け付けます。動作解析の設定では、host = リモートマシン名 ・ port = 9000 と設定します。