<< 目次を表示 >> ページ位置: プログラムの動作解析 > ビルドとデバッグ > 動作解析の設定 > デバッグ > Java JDWPのデバッグ |
Javaのデバッグには2つの方法があります。1つは Java Virtual Machine Tools Interface (JVMTI) と呼ばれる方法で、もう1つがJava Debug Wire Protocol (JDWP)です。Enterprise Architectデバッグでは、JDWPを利用することで、32ビット環境や64ビット環境にある仮想マシン(VM)のJavaアプリケーションをデバッグできます。
必要条件
java -agentlib:jdwp=transport=dt_socket,address=localhost:9000,server=y,suspend=n -cp "c:\java\myapp;%classpath%" demo.myApp "param1" "param2"
動作解析の設定
項目 |
説明 |
デバッガ |
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 と設定します。