exteNd Workbench 4.1
コアヘルプ

 

    First Previous Next Last ツールガイド  05/22/03 08:41:32 

第12章    デバッガ

exteNd Debuggerでは、Javaコードの実行を制御および監視することにより、Javaアプリケーションのランタイムエラーを検出することができます。ローカルホストマシン、または分散マシンからリモートで、サーバ側のオブジェクト(J2EEアプリケーションなど)およびクライアント側のオブジェクトをデバッグすることが可能です。

注記:   デフォルトでは、Workbench内からデバッガを起動すると、exteNd Debuggerが起動されます。異なるデバッガを使用したい場合は、そのデバッガがWorkbench内から起動されるように指定できます。詳細については、 デバッガの指定を参照してください。

この章では、次の項目について説明します。

 
Top of page

知っておく必要のある用語

Debuggerを使用する前に、次の用語を確認しておく必要があります。

用語

説明

ブレークポイント

コード内の実行可能な行で実行を一時的に停止する場所に、「ブレークポイント」を設定できます。コードにブレークポイントを設定すると、プログラムでは、ブレークポイントを含む行を実行する前に停止してから、Debuggerに制御を移します。

デッドロック

デッドロック」は、2つのプロセスで、続行する前にそれぞれ他方が完了するのを待機している場合に発生する状態です。プロセスは、両方ともハングします。

インスタンス変数

インスタンス変数」は、staticというキーワードを使用せずに、クラス宣言内で宣言されるフィールドです。

ローカル変数

ローカル変数」は、特定のメソッドの中で宣言されます。メソッドに含まれているコードのみが、ローカル変数にアクセスできます。

モニタ

Javaでは、「モニタ」は、オブジェクトの排他的ロックです。ロックは、スレッドの同期化に使用されます。メソッドが同期化されるようにプログラムされている場合は、複数のスレッドで同時に実行することはできません。同期化されたメソッドに入ると、現在のオブジェクト(メソッドが呼び出されたオブジェクト)のモニタが取得されます。モニタでは、オブジェクトの他の同期化されたメソッドが実行されないようにします。同期化されたメソッドが返ると、モニタは解放され、同じオブジェクトの他の同期化されたメソッドが実行可能になります。

スレッド

スレッド」は、プログラムの単一の実行ストリームです。Javaはマルチスレッド言語で、一度に多数の実行ストリームを動作させることができます。Javaでは、スレッドはThreadオブジェクトによって表されます。

 
Top of page

Debuggerについて

exteNd Debuggerには、Javaアプリケーションの問題を診断するための複数の機能があります。

多数の機能が表示されているサンプルDebuggerウィンドウは、次のとおりです。

DebuggerFeatures

 
Top of section

サーバオブジェクトおよびクライアントオブジェクトのデバッグ

次のオブジェクトをデバッグすることができます。

オブジェクト

説明

サーバオブジェクト

配備されたJ2EEアプリケーションにある次のオブジェクト:

  • サーブレット(コンパイルされたJSPページを含む)

  • Enterprise Java Beans

  • 配備されたJ2EEアーカイブの他のJavaコード

サーバ上で実行している他のJavaアプリケーション

 
Top of section

ローカルデバッグおよびリモートデバッグ

exteNd Debuggerを使用すると、ローカルホスト上または分散ネットワークでリモートに実行中のJavaアプリケーションをトラブルシューティングできます。プロセスは、ローカルマシンまたはリモートマシンのいずれかでデバッグされるように設定できますが、同じセッションで両方に対して設定することはできません。

次の例のように、リモートデバッグが必要な場合が多々あります。

 
Top of section

プログラム実行の制御

Debuggerには、次の操作を行うことによってコードを実行する方法が存在します。

 
Top of section

プログラムのステータスの監視

ソースコードの問題を個別に特定できるようにするために、Debuggerには、プログラムの実行の任意の点で 変数 コールスタック、および スレッドステータスを検査するためのビューアがあります。

 
Top of section

デバッグの一般的なワークフロー

各デバッグセッションには独自の固有な作業が必要ですが、アプリケーションのトラブルシューティングの際には、通常は次のワークフローに従います。

DebuggerWorkFlow

 
Top of section

サーバアプリケーションおよびクライアントアプリケーションのデバッグ

サーバで実行しているアプリケーションのデバッグに使用する方法は、クライアントアプリケーションのデバッグに使用する方法とは異なります。これらの方法については、次の2つの節で説明します。

 
Top of page

サーバアプリケーションのデバッグ

サーバで実行しているオブジェクト(J2EEアプリケーションなど)をデバッグする場合は、Debuggerからアプリケーションを起動するのではなく、アプリケーションをサーバで起動してから、そのアプリケーションにDebuggerを接続します。WorkbenchによりサポートされているJ2EEアプリケーションサーバで実行中のアプリケーションは、デバッグすることが可能です。

 
Top of section

サーバの起動

場合によっては、サーバオブジェクトをデバッグする前に、アプリケーションサーバをデバッグモードで起動する必要があります。この節では、デバッグするためにNovell exteNd アプリケーションサーバおよびBEA WebLogicを起動する手順について説明します。

For more information    これらのサーバおよび他のアプリケーションサーバのデバッグモードでの起動の詳細については、サーバのマニュアルを参照してください。

デバッグするためのexteNd アプリケーションサーバの起動

注記:   次の手順は、SilverStream eXtend アプリケーションサーバおよびNovell exteNd アプリケーションサーバの両方に適用されます。

Procedure デバッグするためにNovell exteNd アプリケーションサーバを起動する

例   次のコマンドラインでは、ローカルデバッグするためにアプリケーションサーバ exteNdが起動されます。

  ServerInstallDir\bin\SilverServer +debug

次のコマンドラインでは、リモートデバッグするためにexteNd アプリケーションサーバが起動されます。

  ServerInstallDir\bin\SilverServer +debugremote

デバッグするためのWebLogicサーバの起動

Procedure デバッグするためにWebLogicを起動する

  1. 次のように、サーバを起動するためのコマンドラインにオプションを太字で追加することによって、startWebLogic.cmdファイルを修正します。

      "%JAVA_HOME%\bin\java" -hotspot -ms64m -mx64m -Xdebug -Xnoagent
      -Xrunjdwp:transport=dt_socket,server=y,suspend=n -Djava.compiler=NONE
      -classpath ...
    
  2. サーバを起動します。

    起動時に、サーバによって次のようなデバッグアドレスが表示されます。

      Listening for transport dt_socket at address: address
    

    この値は、Debuggerを起動するときに使用します(次の説明を参照)。

 
Top of section

Debuggerの起動

Debuggerは、Workbench内からまたはコマンドラインから起動できます。

Procedure WorkbenchからDebuggerを起動する

  1. Edit]>[Launch Debugger]の順に選択します。

    DebuggerDialog

  2. Attach to running process]をオンにします。

  3. ローカルサーバ上のアプリケーションをデバッグする場合は、[Shared Memory Debugging]をオンにして、デバッグアドレスを入力します。

    リモートサーバ上のアプリケーションをデバッグする場合は、[Remote Socket Debugging]をオンにして、マシン名およびデバッグポートを指定します。

    注記:   WebLogicで実行しているアプリケーションをデバッグする場合は、ローカルのWebLogicサーバ上にアプリケーションがある場合でも、[Remote Socket Debugging]をオンにし、マシン名(ローカルの場合はlocalhost)、および起動時にサーバによって報告されたアドレス(ポート)を指定します。

  4. Debuggerでデバッグするファイルを開き、ブレークポイントを設定してからアプリケーションを実行します。

Procedure コマンドラインからDebuggerを起動する

  1. 現在のディレクトリをWorkbenchInstallDir\binディレクトリにします。

  2. ローカルサーバ上のアプリケーションをデバッグする場合は、次のように入力します。

      SilverDebugger -attach localhost debug_address
    

    リモートサーバ(またはローカルのWebLogicサーバ)上のアプリケーションをデバッグする場合は、次のように入力します。

      SilverDebugger -attach machine_name:debug_port
    
  3. Debuggerでデバッグするファイルを開き、ブレークポイントを設定してからアプリケーションを実行します。

 
Top of section

サンプルデバッグセッション

次のシナリオでは、WorkbenchのWebアプリケーションチュートリアルで作成されたJ2EEアプリケーションであるProverbFinalのデバッグ方法を説明します。このシナリオには、ローカルアプリケーションサーバ上のアプリケーションのデバッグが示されています(このアプリケーションは、Workbenchプロジェクトとして提供されています。詳細については、Workbenchヘルプのチュートリアルを参照してください)。

  1. ローカルサーバをデバッグモードで起動します。

      ServerInstallDir\bin\SilverServer +debug
    
  2. WorkbenchでProverbFinalプロジェクトを開きます。

    このプロジェクトは、WorkbenchInstallDir\docs\tutorial\ProverbFinalにあります。これは、完成したアプリケーションです。

  3. サーバにアプリケーションを配備します。

    このシナリオでは、アプリケーションは、チュートリアル提供のCloudscapeデータベースであるProverbsCloudに配備されました。

  4. デバッグするファイルを開きます。

    WorkbenchからDebuggerを起動したときに開いていたファイルがある場合は、自動的にそのファイルがDebuggerで開きます。他のファイルもDebuggerで開いてデバッグできます。

    debugscenario0

    ここでは、TodayAction.javaが開きました。このコードは、今日のことわざの表示を誰かが要求したときに実行されます。

  5. Edit]>[Launch Debugger]の順に選択して、Debuggerを起動します。

  6. 次のように指定します。

    DebuggerDialog

    アプリケーションサーバは、デフォルトのデバッグアドレスを使用して起動されたため、agsrvがデバッグアドレスとして指定されます。

    Debuggerが開き、ファイルが表示されます。

  7. カーソルを行の上に置き、Debuggerツールバーの[Toggle Breakpoint]アイコン(次の図を参照)をクリックすることによって、コードの行にブレークポイントを設定します。

    togbreak

    debugscenario1

  8. アプリケーションを実行するには、ブラウザを開き、次のURLを指定します。

      http://localhost/ProverbsCloud/ProverbFinal/index.jsp
    

    debugscenario05

  9. Today\xd5 s Proverb]をクリックします。この操作によって、TodayAction.javaのコードが呼び出されます。実行は停止し(ブラウザではページの処理が完了していないことがわかります)、Debuggerウィンドウが更新されます。

    debugscenario2

    実行矢印がブレークポイントにあることを確認できます。

  10. この時点では、変数値やコールスタックなどを参照しながら(この章の残りの部分を参照)、コードを段階的に実行します。

  11. デバッグが終了したら、[Continue]アイコン(次の図を参照)をクリックして実行を続行します。

    IconContinueEx

    ページでは、実行が完了します。

 
Top of section

J2EEアプリケーションのデバッグ

前のサンプルデバッグセッションで示した方法を使用すると、J2EEアプリケーションをデバッグできます。EJBおよびサーブレットは、前に説明した方法と同様にデバッグします。つまり、EJBまたはサーブレットのソースコードをDebuggerで開き、1つまたは複数のブレークポイントを設定してから、アプリケーションを実行します。

JSPページのデバッグ

JSPソースページの検索   実行用にサーブレットに変換されコンパイルされたJSPページをデバッグするには、サーバによってJSPページから作成されたJavaソースファイルを検索してDebuggerで開き、ブレークポイントを設定する必要があります。異なるJ2EEサーバでは、異なった方法でソースファイルを検索します。exteNd アプリケーションサーバおよびWebLogicに関する情報は、次のとおりです。

サーバ

説明

Novell exteNd アプリケーションサーバまたはSilverStream eXtend アプリケーションサーバ

このアプリケーションサーバでは、生成されたソースファイルを「コンパイルキャッシュ」内で検索します。

配備済みのJSPページからアプリケーションサーバによって生成されたJavaソースを検索するには、次のディレクトリ内を検索します。

  ServerInstallDir/compilecache/server/database/temp/sources/application/com/sssw/gen/jsp

たとえば、前に示したtoday.jspに対応するソースファイルを検索するには、次のディレクトリ内を検索します。

  ServerInstallDir/compilecache/localhost/ProverbsCloud/temp/sources/ProverbFinal/com/sssw/gen/jsp

サーバよりサーブレットに変換されたJSPページに対応するJavaファイルのセットが見つかります。ファイルには、name_jsp_nnnnnnnnnn.javaという名前が付けられます。

WebLogic

デフォルトでは、JSPページから生成されたJavaソースファイルはWebLogicによって保存されません。JSPページに対して生成されたJavaソースコードを保持するようにWebLogicに指示するには、weblogic.htmlにあるjsp-descriptor要素のkeepgeneratedパラメータに値trueを指定します。

For more information    他のサーバに関する情報については、各マニュアルを参照してください。

例   Debuggerで表示できるJSPソースページの例は、次のとおりです。

ここでは、today.jspから生成されたJavaソースファイルで実行が停止しています。

debugscenario3

 
Top of page

クライアントアプリケーションのデバッグ

J2EEアプリケーションのデバッグ、およびアプリケーションサーバで実行している他のアプリケーションのデバッグに加えて、Debuggerを使用してクライアントJavaアプリケーションをデバッグすることもできます。

クライアントアプリケーションは、次のいずれかの方法でデバッグできます。

 
Top of section

アプリケーションを起動するためのDebuggerの起動

アプリケーションは、Workbench内からまたはコマンドラインから起動できます。

Procedure Workbenchからクライアントアプリケーションを起動する

  1. Workbenchで、アプリケーションを定義するプロジェクトを開きます。

    プロジェクトのクラスパスが正しくセットアップされていることを確認します。

  2. デバッグするJavaソースファイルを開きます。

  3. Edit]>[Launch Debugger]の順に選択します。

    DebuggerDialog2

  4. Launch new process]をオンにします。

  5. 実行するクラスを指定し、必要な引数を指定します。

  6. OK]をクリックします。

Procedure コマンドラインからクライアントアプリケーションを起動する

  1. 現在のディレクトリをWorkbenchInstallDir\binディレクトリにします。

  2. コマンドラインで次のように入力します。

      SilverDebugger [options] class class_arguments
    

    アプリケーションを起動するためのSilverDebugger引数は、次のとおりです。

    引数

    説明

    options

    –sourcepath directory_list

    Debuggerによってソースファイルが検索されるディレクトリ(セミコロンによって区切られる)のリスト

    注記:   これらのディレクトリは、ソースツリーのルートでなければなりません。

    –sourcefile filename

    Debuggerで表示するJavaソースファイルの完全修飾名

    –?

    SilverDebuggerコマンドの使用状況に関する情報

    –classpath directory_list

    アプリケーションで使用されるJavaクラスがDebuggerによって検索されるディレクトリ(セミコロンによって区切られる)のリスト

    –Dname=value

    アプリケーション環境に対するシステムプロパティ設定

    –Xoption

    アプリケーション環境に対するJVMオプション

    class

    デバッグするクラスの名前

    class_arguments

    クラスのmain()メソッドに渡される引数

    注記:   ソースファイルおよびクラスファイルがリモートネットワークマシン上に常駐している場合は、UNC (Universal Naming Convention)形式を使用してパスとファイル名を指定します。

      \\server-name\shared-resource-pathname
    

    たとえば、JDKに付属のデモ版のNotepadアプリケーションをデバッグするには、次のコマンドを入力します(InstallDirは、c:\jdk1.3\demo\jfc\Notepadなど、デモ版のアプリケーションのインストールディレクトリです)。

      SilverDebugger -sourcepath InstallDir\src 
                     -sourcefile InstallDir\src\Notepad.java 
                     -classpath InstallDir\Notepad.jar 
                     Notepad
    

    Debuggerがデスクトップで開き、指定したJavaソースファイルが表示されます。

  3. 1つまたは複数のブレークポイントを コード内または 例外に設定します。

  4. メニューから[Tools]>[Continue]の順に選択するか、またはDebuggerウィンドウのツールバーにある[Continue]アイコン(次の図を参照)をクリックします。

    IconContinueEx

    アプリケーションがデスクトップで開き、最初に現れたブレークポイントで実行が停止します。

 
Top of section

実行中のアプリケーションへの接続

アプリケーションを起動した後、そのアプリケーションにDebuggerを接続することができます。この操作を実行するには、デバッグするためだけにアプリケーションを起動する必要があります。

Procedure 実行中のJavaアプリケーションにDebuggerを接続する

  1. Javaアプリケーションをローカルホストまたはリモートマシンで起動します。

    アプリケーションをローカルホストで起動する

    JVMによって、「デバッグアドレス」が返されます。例は次のとおりです。

    dbugJavaLocalAppCmd

    この例では、JVMによってjavadebugがデバッグアドレスとして返されます。このオプションtransport=dt_shmemでは、ローカルデバッグに必要な共有メモリトランスポートが指定されます。

    アプリケーションをリモートネットワークマシンで起動する

    JVMによって、「デバッグポート番号」が返されます。例は次のとおりです。

    dbugJavaRemoteAppCmd

    この例では、JVMによって3340がデバッグポートとして返されます。このオプションtransport=dt_socketでは、リモートデバッグに必要なソケットベースのトランスポートが指定されます。

  2. Workbench内からまたはコマンドラインからDebuggerを起動します。

    Workbench内からDebuggerを起動する

    1. Edit]>[Launch Debugger]の順に選択します。

    2. Attach to running process]をオンにします。

    3. ローカルでデバッグする場合は、[Shared Memory Debugging]をオンにし、JVMによって返された「デバッグアドレス」を指定します。リモートでデバッグする場合は、[Remote Socket Debugging]をオンにし、JVMによって返された「デバッグポート」を指定します。

      dbugJavaLocalAppXWB

    コマンドラインからDebuggerを起動する

    Debuggerがデスクトップで開きます。

  3. File]>[Open]の順に選択して、デバッグするソースファイルを開きます。

SilverJ2EEClientに対するデバッグ   これは、exteNd アプリケーションサーバに対するデバッグと同様の手順で行います。適切なデバッグ起動オプション( サーバの起動の説明を参照)を使用してSilverJ2EEClientを起動した後、結果として得られるデバッグアドレス(デフォルトはagjrn)またはデバッグポート(デフォルトは9901)にDebuggerを接続します。

 
Top of page

プログラム実行の管理

Debuggerの起動後、ソースコードの問題を孤立および診断できるようにするためにプログラム実行を管理する方法がいくつかあります。

 
Top of section

ブレークポイントの使用

ブレークポイントは、実行を停止して制御をDebuggerに移す場所をコード内の行で指定するために使用します。コードによって実行が停止され、Debuggerに制御が移されたら、Debuggerコマンドを実行し、コールスタック、スレッドステータス、および変数値を表示することができます。

ブレークポイントは、コード内の個別の行でのみ設定できます。複数のステートメントが1行に含まれている場合は、行の最初のステートメントでのみブレークポイントを設定できます。後続のステートメントにブレークポイントを設定するには、行を分割して、各ステートメントが1行に表示されるようにする必要があります。

注記:   ブレークポイントは、サーバ名およびクラス名別に保存されます。そのため、同じサーバ上にある同じような名前のオブジェクトでは、ブレークポイントを共有します。

コードでのブレークポイントの設定および削除

ローカルクラス、または外部ソースからロードされたクラスに対して、ブレークポイントをコードで設定および削除するには、いくつかの方法があります。ソースコードがDebuggerで見つからない場合は、パスを入力するように指示されます( ソースコードがDebuggerで見つからない場合の説明を参照)。

この節では、ソースコードでブレークポイントを設定および削除する手順について説明します。

Procedure [Toggle Breakpoint]を使用してコードにブレークポイントを設定する

  1. ソースコード内の行で、ブレークポイントを設定する場所にカーソルを置きます。

  2. メニューから[ Tools]>[Toggle Breakpoint]の順に選択するか、またはDebuggerツールバーにある[Toggle Breakpoint]アイコン(次の図を参照)を選択します。

    togbreak

    ブレークポイントインジケータbreakInd は、左側の余白で、指定した行の隣に表示されます。

Procedure [Edit]メニューを使用してコードにブレークポイントを設定する

  1. メニューから[ Edit]>[Show Line Numbers]の順に選択します。

    これによって、ブレークポイントの場所が指定しやすくなります。

  2. メニューから[Edit]>[Breakpoints]の順に選択します。

    [Manage Breakpoints]ダイアログボックスが開きます。

  3. [Code]タブを選択します。

    ダイアログボックスに、設定したブレークポイントがすべてリストされます。

  4. Add]をクリックします。

  5. 次のいずれか1つを実行します。

    ブレークポイントの挿入場所

    操作手順

    ローカルのJavaクラス

    1. [Specify Breakpoint]フィールドに、ブレークポイントを追加する場所を次の形式で入力します。

        <fully qualified class name>:<line number>
      

      例:

      com.myapp.gui.CheckBoxes:99

    2. [OK]をクリックします。

    ロードされたクラス

    1. [Browse]をクリックします。

    2. ブレークポイントを挿入するメソッドに移動し、[OK]をクリックします。

      [Specify Breakpoint]フィールドに、ブレークポイントの仕様が表示されます。

    新しいブレークポイントが、[Manage Breakpoints]ダイアログボックスに表示されます。

  6. OK]をクリックします。

  7. Done]をクリックすると、ブレークポイントがソースコードに追加されます。

Procedure [Toggle Breakpoints]を使用して個別のブレークポイントを削除する

  1. ブレークポイントがある行をクリックします。

  2. Debuggerツールバーの[Toggle Breakpoint]アイコンを選択します。

Procedure [Edit]メニューを使用してブレークポイントを削除する

  1. メニューから[Edit]>[Breakpoints]の順に選択します。

    [Manage Breakpoints]ダイアログボックスが開きます。

  2. [Code]タブを選択し、削除するブレークポイントをクリックして選択します。

  3. [Delete]をクリックします。

    [Manage Breakpoints]ダイアログボックスのリストからブレークポイントが消えます。

  4. [Done]をクリックします。

    ソースコードからブレークポイントが消えます。

Procedure すべてのブレークポイントを削除する

例外でのブレークポイントの設定および削除

Javaアプリケーションのソースコード本文でのブレークポイントの設定に加えて、標準のJavaの例外、または特定の動作を処理するために作成した例外に、ブレークポイントを設定することもできます。

この機能を使用すると、アプリケーションの実行時に予期せずスローされた例外のソースを特定できます。例外にブレークポイントを設定してからアプリケーションを実行すると、Debuggerは、例外がスローされた場所で停止し、デバッグしているクラスにソースコードがある場合は、問題のあるソースコードがDebuggerによって表示されます。ソースコードがDebuggerで見つからない場合は、パスを入力するように指示されます( ソースコードがDebuggerで見つからない場合の説明を参照)。

Procedure 例外にブレークポイントを設定する

  1. メニューから[Edit]>[Breakpoints]の順に選択します。

    [Manage Breakpoints]ダイアログボックスが開きます。

  2. [Exception]タブを選択して、[Add]をクリックします。

    [Add Exception Breakpoint]ダイアログボックスが開きます。

  3. ブレークする例外クラスの完全修飾名を入力するか、または[Browse]をクリックしてロード済みの例外のリストから例外を選択します。

  4. [OK]をクリックして、[Manage Breakpoints]ダイアログボックスに戻ります。

    新しいブレークポイントがリストされます。

  5. [Done]をクリックします。

    注記:   例外のブレークポイントは、ソースコードには表示されません。

Procedure 例外からブレークポイントを削除する

  1. メニューから[Edit]>[Breakpoints]の順に選択します。

    [Manage Breakpoints]ダイアログボックスが開きます。

  2. Exception]タブを選択し、削除するブレークポイントをクリックします。

  3. [Delete]をクリックします。

    ブレークポイントがリストから削除されます。

  4. [Done]をクリックします。

ブレークポイントの有効化および無効化

Debuggerでは、コードおよび例外のブレークポイントを有効にしたり無効にしたりすることができます。無効になったブレークポイントは、グレーのアイコン(次の図を参照)で表示されます。

disabledBreakpoint

Procedure ブレークポイントを有効にしたり無効にしたりする

  1. メニューから[Edit]>[Breakpoints]の順に選択します。

    [Manage Breakpoints]ダイアログボックスが開きます。

  2. [Code]タブまたは[Exception]タブを選択し、有効または無効にするブレークポイントを検索します。

  3. アクティブにするブレークポイントをクリックし、[Enable]または[Disable]をクリックします。

    複数のブレークポイントを選択するには、<Ctrl>キーまたは<Shift>キーを押しながら各ブレークポイントをクリックします。

  4. [Done]をクリックします。

    選択したブレークポイントは、プログラム実行を続行する際に有効または無効になります。

 
Top of section

実行の続行

使用するコマンド   プログラムがブレークポイントで停止した場合は、Debuggerの[Continue]コマンドまたは[Run to Cursor]コマンドを使用して実行を続行できます。

行われること   プログラムがブレークポイントに達すると、Debuggerウィンドウがアクティブになり、実行される行を示す矢印(「実行ポインタ」と呼ばれる)がコードの左側の余白に表示されます。

実行ポインタに加え、Debuggerでは、 ローカル変数およびインスタンス変数のリストが表示され、 コードを段階的に実行するコマンドが有効になります。

Procedure 次のブレークポイントまで続行する

Procedure ソースコード内の指定場所まで実行する

  1. コード内の行で実行を停止する場所をクリックします。

    カーソルは、実行可能なステートメントを含む行に配置する必要があります。

  2. メニューから[Tools]>[Run to Cursor]の順に選択するか、またはDebuggerウィンドウのツールバーにある[Run to Cursor]アイコン(次の図を参照)をクリックします。

    IconRunToCursor

    [Run to Cursor]によって、現在の実行場所から、カーソルが配置されている場所に達するまで、コードが実行されます。ブレークポイントが設定されていて、カーソルが置かれている行よりも前にブレークポイントを含む行が実行された場合、[Run to Cursor]により、そのブレークポイントの行で実行が停止されます。

注記:   実行されない行にカーソルを置くと(たとえば、if条件がfalseと評価された場合で、ifステートメント内のコードの最初の行にカーソルがあるとき)、[Run to Cursor]を実行した場合の結果は、[Continue]コマンドを選択した場合と同じになります。

 
Top of section

コードの段階的な実行

exteNd Debuggerには、次の3つのステップコマンドが含まれています。

コマンド

実行内容

詳細

[Step Over]

現在の行

現在の行にメソッド呼び出しが含まれている場合、そのメソッドが実行されます。Debuggerは、実行された行のすぐ後の行で停止します。

[Step In]

現在の行

現在の行にメソッド呼び出しが含まれている場合、Debuggerは、呼び出されたメソッドの最初の行で停止します。そうでない場合は、Debuggerは、実行された行のすぐ後の行で停止します。

入力されたメソッドのソースコードがDebuggerで見つからない場合は、パスを入力するように指示されます( ソースコードがDebuggerで見つからない場合の説明を参照)。

[Step Out]

現在のメソッドの残り

Debuggerは、現在のメソッドを呼び出したステートメントのすぐ後のステートメントで停止します。

 
Top of section

ソースコードがDebuggerで見つからない場合

特定の操作のソースコードがDebuggerで見つからない場合は、ソースファイルへのパスを入力するように指示されます。パスを入力するか、またはプロンプトを閉じ、指示に従って 実行を続行するか、あるいは現在のメソッドから ステップアウトします。

 
Top of page

アプリケーションの動作の分析

現在の実行の状態は、次の3つの時点で検査できます。

これらの各時点では、次の情報を表示することができます。

 
Top of section

コールスタックの表示

Debuggerには、プログラムの実行中にコールスタックを検査できるようにするビューアがあります。コールスタックビューアでは、スタックの各メソッドの名前が、ソースファイルおよび行番号とともに表示されます。

コールスタックビューアでメソッドをダブルクリックすると、Debuggerでソースファイルが開き、メソッドを呼び出す行が選択されます。ソースファイルがDebuggerで見つからない場合は、パスを入力するように指示されます( ソースコードがDebuggerで見つからない場合の説明を参照)。

コールスタックビューアでは、次の場合にコールスタックを更新します。

Procedure コールスタックビューアを開く

 
Top of section

スレッドの表示

Debuggerには、プログラムの実行中にスレッドのステータスを検査できるようにするビューアがあります。スレッドビューアでは、グループ別に整理されたスレッドが表示され、各スレッドの名前が識別子および状態とともに表示されます。

デッドロックや無限ループなど、スレッドの同期化で発生した問題を孤立させる場合は、 スレッドを一時停止および再開することができます。

スレッドビューアでは、次の場合にスレッドステータスを更新します。

Procedure スレッドビューアを開く

スレッドステータスの解釈

スレッドは、プログラムの実行中にさまざまな状態で表示されることがあります。

スレッドの状態

説明

At breakpoint

スレッドは、ブレークポイントで実行が停止したときに実行していた

Running

スレッドは実行中

Sleeping

スレッドは、指定した期間スリープ状態になっている

Suspended

スレッドは一時停止中

Waiting

スレッドは、実行を再開する通知を待機している

Waiting on monitor

スレッドは、別のスレッドによってモニタが解放されるのを待機している

注記:   デッドロックの場合は、この状態のスレッドが複数表示されます。ただし、この状態で表示されるスレッドが、必ずしもデッドロックを示すとは限りません。

スレッドの一時停止および再開

スレッドに無限ループまたはデッドロックが現れた場合は、スレッドを一時停止してそのコールスタックを表示することによって、問題を孤立させることができます。一時停止しない限り、スレッドのコールスタックは表示できません。

Procedure スレッドを一時停止してコールスタックを表示する

  1. スレッドビューアおよびコールスタックビューアを開きます。

  2. 次のいずれか1つを実行します。

    一時停止するスレッド

    操作手順

    すべてのスレッド

    1. ブレークポイントでコードの実行を停止します。

    2. 一時停止されたスレッドをクリックします。

    個別のスレッド

    スレッドビューアで、実行中または待機中のスレッドをダブルクリックします。

    選択したスレッドのコールスタックが、コールスタックビューアに表示されます。

  3. コールスタックのメソッドをダブルクリックし、Debuggerでコードを表示します。

    待機中のスレッドをダブルクリックすると、そのスレッドを待機状態にしたメソッドがコールスタックビューアに表示されます。

    選択したメソッドのソースコードがDebuggerで見つからない場合は、パスを入力するように指示されます( ソースコードがDebuggerで見つからない場合の説明を参照)。

Procedure スレッドを再開する

 
Top of section

変数の表示

Debuggerには、プログラムの実行がブレークポイントで停止した場合にローカル変数およびインスタンス変数を検査できるようにするビューアが用意されています。変数ビューアでは、変数名、タイプ、および値が表示されます。

変数ビューアでは、次の場合に変数値を更新します。

Procedure 変数ビューアを開く

  1. Debuggerで、メニューから[View]>[Variables]の順に選択します。

    変数を表示するペインがDebuggerウィンドウに表示されます。

  2. ローカル変数を表示するには[locals]をクリックし、現在のオブジェクトのインスタンス変数を表示するには[this]をクリックします。

 
Top of page

Debuggerのキーボードショートカット

次のキーボードショートカットを使用します。

キーストローク

説明

Ctrl+C

クリップボードにコピー

Ctrl+G

行番号に移動

Ctrl+F

検索/置換

F5

続行

F10

ステップオーバー

F11

ステップイン

Shift+F11

ステップアウト

Ctrl+F10

カーソルまで実行


    First Previous Next Last ツールガイド  05/22/03 08:41:32 

Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC, a wholly owned subsidiary of Novell, Inc. All rights reserved.