![]() |
JDE Java開発環境
|
JDEEについては新たなWebページに書き直し作業中です。このページは更新停止しています。
JDE(Java Development Environment)のデバッグ機能であるJDEbugの使い方です。
JDEbugは、Java 2プラットフォームのJava Platform Debugger Architecture (JPDA) を使用してEmacs上からデバッグ操作を行うための機能です。
青字で表示されている項(例えばJde Db Debugger)が設定項目です。今回設定する最低限の項目は次の通りです。
| 設定項目名 | デフォルト値 | 目的 | 設定する値(例) |
|---|---|---|---|
| Jde db debugger | Other(jdb) | 実行するデバッガ種類を指定 | JDEbug |
| Jde Bug Vm Includes Jpda | off | JavaVMがJPDAを持っているか指定 | on |
| Jde Bug Jdk Directory | なし | JDKのパス | e:/java/jdk1.3 |
Jde Bug‥‥‥の設定グループは、JDEメニュー→Project→Optionsでポップアップするメニューにはないので、いったん他の設定グループを選んでJDEグループへ上がってからBugグループへ降りていって設定するか、またはM-x customize-variableで設定項目名を直接入力する。
設定が終わったら、画面最初の部分へ戻り、[Set for Current Session]を右クリックする。次に、Javaソースファイルが開かれているBufferを表示させ、JDEメニュー→Project→Project File→Saveを選択する。するとミニバッファ上でプロジェクト名を聞いてくるので、デフォルトのまま(何も指定せずに)Enterを押す。すると、prj.elというファイル名でプロジェクト設定内容が保存されます。
この設定が有効になれば、プロジェクト下のJavaソースファイルをEmacsに読み込むとメニューにJDEbugが追加されます。

JDEbugによるソースレベルのデバッグ実行では、あらかじめソースファイルのある場所を指定しておく必要があります。アプリケーションのソースファイルが配置されているディレクトリのほか、JDKクラスライブラリのソースファイル等ソースレベルでデバッグ対象とするものを設定します。
| 設定項目名 | デフォルト値 | 目的 | 設定する値(例) |
|---|---|---|---|
| Jde Db Source Directories | なし | デバッグ対象ソースファイルの配置されているディレクトリを指定 | f:/home/toru/javaw/learn/jde/jdebug/ex1 d:/java/jdk1.3/src/ |
JDEメニュー→Project→Options→Generalで設定可能です。
JDEbugによるデバッグは、まずデバッガを起動し、次にデバッグ対象となるアプリケーションプログラムを実行します。デバッガとデバッグ対象プロセスを接続することによって、様々な操作ができるようになります。デバッグ対象プロセスを生成し接続する方法はいくつかあります。
デバッガの外部で起動しているプロセスと接続するプロトコル(プロセス間通信)種類は以下のとおりです。
| プロトコル | 対応OS | リモートデバッグ | |
|---|---|---|---|
| Windows | Windows以外 | ||
| ソケット | OK | OK | OK |
| 共有メモリ | OK | NONE | NONE |
デバッガ内からデバッグ対象プログラムを起動してデバッグする方法です。JDE上での実行は次のステップで進みます。
それぞれのステップを個々にメニューから操作して実行することもできますし、まとめて一発実行することもできます。
2001.8.24注 Windows2000ではサービスパック2を当てないとデバッガ内起動ができません。下記メッセージがでます。menu-bar JDE Debug App No response to command 1. (process = 1; timeout = 30 sec.)
まずブレークポイントを設置します。ブレークポイントを置きたい行にカーソルを置いてからJDEbugメニューのToggle
Breakpoint (C-c C-z C-b)を実行すると、該当行がブレークポイントとして設定されます。表示上はブレークポイント行色に変化します。
次に、JDEメニューのDebug App (C-c C-v C-d)を選択します。デバッグ対象プログラムが実行され、最初のブレークポイントで停止します。ブレークポイントが1つも設定されていないと、プログラムを最後まで実行して(終了して)しまいます。
デバッガを起動します。JDEbugメニュー→Processes→Start Debuggerを選択します。うまく起動することができると、ミニバッファに"Debugger started successfully."とメッセージが表示されます。
デバッグ対象であるプログラムを生成します。起動するクラスはmainメソッドを持っている必要があります。起動するクラスは、JDEカスタマイズの設定項目Jde
Run Application Classに記述しておきます。もしこの設定値がnil(指定なし)の場合は、現在開かれているバッファに読み込んでいるソースファイルのクラスになります。
JDEbugメニュー→Processes→Launch Processを選択します。
プログラムはこの時点ではmainメソッドの個所で停止しています。
ブレークポイントを設定します。
デバッグ対象プログラムを続行(実行)します。
JDEbugメニュー→Continue (C-c C-z C-c) を選択します。
既に実行中のデバッグ対象プロセスに接続するデバッガを起動します。
mainから一連の処理を実行したら終了してしまうプログラムには向きません。
(略)
デバッガを起動し、後ほどデバッグ対象プロセスが起動され接続してくるまで待機します。
デバッガを起動します。JDEbugメニュー→Processes→Start Debuggerを選択します。うまく起動することができると、ミニバッファに"Debugger started successfully."とメッセージが表示されます。
JDEbugメニュー→Processes→Listen on→Socketを選択します。
ミニバッファにプロンプトで後ほど接続に使用するポート番号を聞いてくるので、任意の数値(ソケットのポート番号として有効なもの)を入力します。
プロジェクト設定jde-bug-server-socketでポート番号を指定しておくこともできます。
待機モードで既に起動されているデバッガへ接続するプログラムを実行します。このとき、下記のJavaVMオプションを指定する必要があります。
Emacs+JDEから起動するときは、JDEメニュー→Run
App (C-c C-v C-r)を選択します。このときJavaVMオプション指定は、プロジェクト設定jde-run-option-vm-argsで指定します。
| 指定するオプション | 備考 |
| -classic | デフォルトでHotspotを使うJavaVMの場合に指定 |
| -Xdebug | |
| -Xnoagent | |
| -Djava.compiler=NONE | JITを使うJavaVMの場合に指定 |
| -Xrunjdwp:transport=dt_socket,address=NNNN,server=n,suspend=y | NNNNは手順2.で入力したポート番号の文字列をいれる |
| -Xbootclasspath:JDKHOME/jre/lib/rt.jar;JDKHOME/lib/tools.jar | JDK1.3の場合に指定。 |
デバッガを起動します。JDEbugメニュー→Processes→Start Debuggerを選択します。うまく起動することができると、ミニバッファに"Debugger started successfully."とメッセージが表示されます。
JDEbugメニュー→Processes→Listen on→Shared Memoryを選択します。
ミニバッファにプロンプトで後ほど接続に使用する接続名を聞いてくるので、任意の文字列を入力します。
プロジェクト設定jde-bug-server-shmem-nameで指定しておくこともできます。
待機モードで既に起動されているデバッガへ接続するプログラムを実行します。このとき、下記のJavaVMオプションを指定する必要があります。
Emacs+JDEから起動するときは、JDEメニュー→Run
App (C-c C-v C-r)を選択します。このときJavaVMオプション指定は、プロジェクト設定jde-run-option-vm-argsで指定します。
| 指定するオプション | 備考 |
| -classic | デフォルトでHotspotを使うJavaVMの場合に指定 |
| -Xdebug | |
| -Xnoagent | |
| -Djava.compiler=NONE | JITを使うJavaVMの場合に指定 |
| -Xrunjdwp:transport=dt_shmem,address=NNNN,server=n,suspend=y | NNNNは手順2.で入力した接続名の文字列をいれる |
| -Xbootclasspath:JDKHOME/jre/lib/rt.jar;JDKHOME/lib/tools.jar | JDK1.3の場合に指定。 |