[Meadowで開発へ戻る]

JDE Java開発環境
-デバッグ編-

JDEEについては新たなWebページに書き直し作業中です。このページは更新停止しています。

JDE(Java Development Environment)のデバッグ機能であるJDEbugの使い方です。

概要

JDEbugは、Java 2プラットフォームのJava Platform Debugger Architecture (JPDA) を使用してEmacs上からデバッグ操作を行うための機能です。

設定

JDEbugを有効化

青字で表示されている項(例えば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上での実行は次のステップで進みます。

  1. デバッガ起動(Start Debugger)
  2. デバッグ対象プロセス生成(Launch Application)
  3. ブレークポイント設置
  4. デバッグ対象プロセス実行

それぞれのステップを個々にメニューから操作して実行することもできますし、まとめて一発実行することもできます。

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つも設定されていないと、プログラムを最後まで実行して(終了して)しまいます。 

ステップ個別実行

1.デバッガ起動

デバッガを起動します。JDEbugメニュー→Processes→Start Debuggerを選択します。うまく起動することができると、ミニバッファに"Debugger started successfully."とメッセージが表示されます。

2.デバッグ対象プロセスの生成

デバッグ対象であるプログラムを生成します。起動するクラスはmainメソッドを持っている必要があります。起動するクラスは、JDEカスタマイズの設定項目Jde Run Application Classに記述しておきます。もしこの設定値がnil(指定なし)の場合は、現在開かれているバッファに読み込んでいるソースファイルのクラスになります。
JDEbugメニュー→Processes→Launch Processを選択します。
プログラムはこの時点ではmainメソッドの個所で停止しています。

3.ブレークポイント設置

ブレークポイントを設定します。

4.デバッグ対象プロセス実行

デバッグ対象プログラムを続行(実行)します。
JDEbugメニュー→Continue (C-c C-z C-c) を選択します。

デバッガ接続起動

既に実行中のデバッグ対象プロセスに接続するデバッガを起動します。

mainから一連の処理を実行したら終了してしまうプログラムには向きません。

(略)

デバッガ待機起動

デバッガを起動し、後ほどデバッグ対象プロセスが起動され接続してくるまで待機します。

ソケットを介してデバッグ

1.デバッガを起動

デバッガを起動します。JDEbugメニュー→Processes→Start Debuggerを選択します。うまく起動することができると、ミニバッファに"Debugger started successfully."とメッセージが表示されます。

2.デバッガを待機(listen)モードに設定

JDEbugメニュー→Processes→Listen on→Socketを選択します。

ミニバッファにプロンプトで後ほど接続に使用するポート番号を聞いてくるので、任意の数値(ソケットのポート番号として有効なもの)を入力します。
プロジェクト設定jde-bug-server-socketでポート番号を指定しておくこともできます。

3.デバッグ対象プログラムを起動

待機モードで既に起動されているデバッガへ接続するプログラムを実行します。このとき、下記の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の場合に指定。

共有メモリを介してデバッグ

1.デバッガを起動

デバッガを起動します。JDEbugメニュー→Processes→Start Debuggerを選択します。うまく起動することができると、ミニバッファに"Debugger started successfully."とメッセージが表示されます。

2.デバッガを待機(listen)モードに設定

JDEbugメニュー→Processes→Listen on→Shared Memoryを選択します。

ミニバッファにプロンプトで後ほど接続に使用する接続名を聞いてくるので、任意の文字列を入力します。
プロジェクト設定jde-bug-server-shmem-nameで指定しておくこともできます。

3.デバッグ対象プログラムを起動

待機モードで既に起動されているデバッガへ接続するプログラムを実行します。このとき、下記の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の場合に指定。

[目次へ戻る]


デバッグ作業


[目次へ戻る]