Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

スタジオ・デバッガの使用

スタジオのデバッガを使用すると、Caché サーバで動作するプログラムをステップ実行できます。デバッグ可能なプログラムとしては、INT ファイル、BAS ファイル、MAC ファイル、CLS ファイル内のメソッド、HTTP 要求に応答する CSP クラス、Java や ActiveX のクライアントから呼び出されるサーバ側のメソッド、サーバでホストされるアプリケーションなどがあります。クラスや CSP ページでステップ実行やブレークポイントの設定を行うには、対応する INT ファイルまたは BAS ファイルを開き、そのファイルでデバッグ・コマンドを使用します。INT ソース・コード・ファイルを表示するには、[ツール]→[オプション] ダイアログの [コンパイラ]→[一般フラグ] タブで、[生成されたソース・コードを保存] オプションにチェックを付けます。

以下のいずれかの方法で、デバッガをターゲット・プロセスに接続できます。

  • [プロジェクト]→[設定]→[デバッグ]→[デバッグ対象] (または [デバッグ]→[デバッグ対象]) を選択して、現在のプロジェクトのデバッグ対象 (デバッグするプログラム、ルーチン、Zen ページ、または CSP ページの名前) を設定します。次に、[デバッグ]→[実行] を選択して対象のプログラムを起動し、そのサーバ・プロセスに接続します。

  • [デバッグ]→[アタッチ] を選択して、Caché サーバで実行中のプロセスを選択します。

実行中のプロセスにアタッチするには、%ALL ロール、またはデバッグしようとしているプロセスと同じ $USERNAME が必要です。

または、コマンド行から zbreak コマンドを入力してデバッグを起動した方が、便利な場合もあります。zbreak の詳細は、"Caché ObjectScript の使用法" の "コマンド行ルーチンのデバッグ" の章を参照してください。

デバッグ・セッションのサンプル : ルーチンのデバッグ

以下の例では、Caché ルーチンをデバッグする方法を示します。

  1. スタジオを起動し、[ファイル]→[プロジェクトの新規作成] を選択して、Project1 という新規プロジェクトを作成します。

  2. [ファイル]→[新規作成]→[一般] タブ→[ObjectScript ルーチン] を選択して、新規のルーチンを作成します。

  3. このルーチンにコードを入力します。

    MyTest ; MyTest.MAC
    
    Main() PUBLIC {
        Set a = 10
        For i = 1:1:10 {
            Set b = i
                 Write b," "
        }
    }
    
  4. [ファイル]→[名前を付けて保存] を使用して、新規のルーチンを MyTest.MAC として保存し、コンパイルします。

  5. [デバッグ]→[デバッグ対象] タブを選択し、[クラス・メソッドまたは Caché ルーチン] を選択します。次に、新規ルーチンのエントリ・ポイントの名前 Main^MyTest を入力して、プロジェクトのデバッグ対象を指定します。

  6. ルーチン内のブレークポイントを設定します。Set a = 10 という行にカーソルを置き、F9 (トグル・ブレークポイント) キーを押します。左の余白にブレークポイント・インジケータ generated description: breakpoint が表示されます。

  7. [デバッグ]→[実行] を選択して、デバッグを開始します。デバッガがブレークポイントで停止すると、次に実行するコマンドの簡単な説明が、黄色のボックスに表示されます。INI ファイルが新規ウィンドウに開きます ([ツール]→[オプション] ダイアログの [コンパイラ]→[一般フラグ] タブで [生成されたソース・コードを保存] オプションが有効になっている場合)。

  8. ウォッチ・ウィンドウ ([表示]→[ウォッチ]) に b および a を (ウォッチポイントとして) 入力して、これらの値を参照できるようにします。

  9. [デバッグ]→[ステップイン] (F11) を繰り返し選択してプログラムのステップ実行を行い、b の値が変化することに注意します。

[デバッグ]→[停止] を使用して、デバッグをプログラムの最後で停止できます。

generated description: outputandwatchwindows

現在のプロジェクトのデバッガ設定

デバッガ設定のいくつかは、現在のプロジェクトで指定したり、保存できるものがあります。これには、以下のものがあります。

  • デバッグ対象

  • ブレークポイント

デバッグ対象

デバッグ対象によって、デバッグするプロセスをスタジオに指定します。

プロジェクトのデバッグ対象を指定するには、[プロジェクト]→[設定]→[デバッグ]→[デバッグ対象] を選択するか、[デバッグ]→[デバッグ対象] を選択します。以下のいずれかを選択し、[デバッグ]→[実行] を選択して実行します。また、エディタ・ウィンドウで項目の横にカーソルを置いて、右クリックし、[デバッグ対象として xxxx を設定] を選択して、デバッグ対象を設定することもできます。

クラス・メソッドまたは Caché ルーチン

[デバッグ]→[実行] の選択時にデバッグするルーチン (およびタグ)、クラス、またはメソッド。例えば、ルーチン MyRoutine 内のタグ Test からデバッグを開始するには、Test^MyRoutine() と入力します。または、##class(MyApp.Person).Test(1) のように、実行するクラス・メソッドの名前を入力します。

ZEN ページと CSP ページ (URL、CSP、またはクラス)

[デバッグ]→[実行] の選択時にアクセスする Zen ページまたは CSP ページ。デバッガは、CSP ページの HTTP 要求を処理する Caché サーバ・プロセスに接続します。このオプションを使用して、CSP アプリケーションをデバッグします。例えば、Test.csp ページのコードを実行するには、デバッグ対象として /csp/user/Test.csp と入力します。

ブレークポイント

プロジェクトには、F9 で設定したブレークポイントのリストが保持されます。プロジェクトのデバッグ対象にデバッグを開始するとき ([デバッグ]→[実行])、プロジェクトによって定義されたブレークポイントはすべて、対象プロセス内で設定されます。

ブレークポイントを表示するには、[デバッグ]→[ブレークポイント]→[ブレークポイントの表示] を選択します。ブレークポイントを追加または削除するには、ブレークポイント位置にカーソルを置き、[デバッグ]→[ブレークポイント]→[ブレークポイント切替] を選択するか、F9 キーを押します。また、[プロジェクト]→[設定]→[デバッグ]→[ブレークポイント] を使用しても、ブレークポイントを追加、または削除できます。

Note:

1 つのルーチンに設定できるブレークポイントの最大数は 20 です。 20 を超えるブレークポイントが設定されると、デバッガに <ROUTINELOAD>^%Debugger.System.1 が表示され、デバッグが停止します。

[デバッグ] メニュー

[デバッグ] メニュー・オプションには、以下のものがあります。

generated description: attachiconアタッチ

Caché サーバが現在実行しているプロセスのリストを表示し、デバッグするプロセスにアタッチします。

プロセスを選択し、[OK] を選択すると、スタジオは選択された対象プロセスに割り込み、デバッグを開始できるようになります。

対象プロセスで実行中の現在のルーチンのソースを生成している場合、そのソースはエディタ・ウィンドウに表示されます。

[デバッグ]→[停止] を使用してデバッグを終了した場合、後で対象プロセスの実行を再開できます。

generated description: goicon実行

現在デバッグ中でない場合は、[実行] をクリックすると、プロジェクトのデバッグ対象で指定されている対象プロセスが起動されます。

対象プロセスが設定されていない場合は、設定するように求められます。デバッグ対象は、実行するルーチンまたはメソッドの名前であり、[デバッグ対象] ダイアログで設定できます。

対象プロセスが起動されると、最初のブレークポイントまで実行されます。アプリケーション内でブレークポイントを設定していない場合、最後まで停止することなく実行を完了します。

generated description: restarticon再開 対象プロセスの実行をいったん停止して再起動してから、デバッグを再開します ([実行] コマンドを使用した場合と同様)。
generated description: stopicon停止 デバッグを停止し、対象プロセスを停止するか、アタッチを解除します。対象プロセスが実行されており、[アタッチ] を使用してアタッチされている場合、対象プロセスの実行は継続されます。対象プロセスが [実行] コマンドによって起動している場合は、終了します。
generated description: restarticonブレーク 対象プロセスの実行を一時停止します (現在停止中ではなく実行中の対象プロセスにデバッガがアタッチされている場合)。
generated description: interrupticon中断 現在のコマンドの実行を中断します。
ステップイン 現在のコマンドを対象プロセス内で実行して、次のコマンドで停止し、すべての関数呼び出しやループ本文にステップインします。
generated description: stepovericonステップオーバ 対象プロセス内の現在のコマンドを実行し、次のコマンドで停止します。デバッガは、検出したすべての関数呼び出しやコード・ブロック (ループなど) をステップオーバして、関数呼び出しやコード・ブロックに続くコマンドで停止します。
generated description: stepouticonステップアウト 現在のコード・ブロックや関数から離れるかステップ・アウトすることで対象プロセスの実行を進めて、この外部レベルの次のコマンドで停止します。
generated description: runtocursoriconカーソル位置まで実行

INT ルーチンを含むドキュメントに対してのみ利用できます。

対象プロセスの実行を開始し、現在のカーソル位置に到達したときに停止します。この操作は、エディタ・ウィンドウを使用して現在の行でブレークポイントを設定し、[実行] コマンドを実行して、プログラムが停止したときにブレークポイントを消去するのと同じです。

ウォッチ ウォッチ・ウィンドウの表示/非表示を切り替えます。
ブレークポイント ブレークポイント切替 generated description: togglebreakpointicon : 現在のドキュメント内の現在行のブレークポイントを設定またはクリアします。ブレークポイントの表示[ブレークポイント] ダイアログが開いて、ブレークポイントのリスト表示、追加、および削除を実行できます。
デバッグ対象 デバッグ対象として、メソッド、ルーチン、Zen ページ、または CSP ページを入力します。"デバッグ対象" も参照してください。

ウォッチ・ウィンドウ

ウォッチ・ウィンドウには、変数の値と単純な式を示すテーブルが表示されます。ウォッチ・ウィンドウにリスト表示されているすべての変数と式 (ウォッチポイントと呼ばれます) は、各デバッガ処理 (ステップオーバなど) の後に評価され、その結果として得られた値がウォッチ・ウィンドウの 2 列目に表示されます。デバッガ・オペレーション後に変数の値や式が変更された場合は、赤で表示されます。ウォッチ・リストの変数が評価されるときに未定義の場合、その値は <UNDEFINED> として表示されます。同様に、結果がエラーとなる式でも、その値に対するエラー・メッセージが表示されます。また、変数上にマウス・ポインタを置くことにより、デバッガのヒントに表示される変数の値を確認することができます。

ウォッチ・ウィンドウに変数や式を追加するには、最初の列で空のセルをダブルクリックし、変数や式を入力します。または、エディタ・ウィンドウでマウスを使用してテキストをハイライト表示し、ウォッチ・ウィンドウの空のセルにドラッグ・アンド・ドロップすることもできます。ウォッチ・ウィンドウのコンテンツを編集する場合は、変数や式をダブルクリックして入力することができます。

以下は、ウォッチ・ウィンドウで入力できる変数や式の例です。

  • a

  • a + 10

  • a(10,10)

  • $L(a)

  • person.Name

ウォッチ・ウィンドウの Value 列に新規の値を入力して、対象プロセスの変数の値を変更することもできます。

デバッガ・ウォッチ・ウィンドウ・コンテキスト・メニュー

デバッガ・ウォッチ・ウィンドウを右クリックすると、以下のコンテキスト・メニューが表示されます。

削除 ウォッチ・リストからそのアクティブな変数を削除します。
表示形式 リストから表示形式を選択します。
オブジェクトのダンプ 選択された変数に対する %SYSTEM.OBJ.Dump() の結果を表示します。
[更新] ウォッチ・リストを更新します。
すべて削除 ウォッチ・リストからすべてのアクティブな変数を削除します。
ウォッチに追加 選択された配列の要素またはオブジェクト・プロパティを、独立したエントリとしてウォッチ・メニューに追加します。
FeedbackOpens in a new tab