スタジオ・デバッガの使用
スタジオのデバッガを使用すると、InterSystems IRIS® サーバで動作するプログラムをステップ実行できます。デバッグ可能なプログラムとしては、INT ファイル、BAS ファイル、MAC ファイル、CLS ファイル内のメソッド、Java から呼び出されるサーバ側のメソッド、サーバでホストされるアプリケーションなどがあります。クラスでステップ実行やブレークポイントの設定を行うには、対応する INT ファイルまたは BAS ファイルを開き、そのファイルでデバッグ・コマンドを使用します。INT ソース・コード・ファイルを表示する前に、以下を行う必要があります。
-
[ツール]→[オプション] を選択します。
-
左側のペインで [コンパイラ]→[フラグおよび最適化] に移動します。
-
[生成されたソースコードを保存] を選択します。
以下のいずれかの方法で、デバッガをターゲット・プロセスに接続できます。
-
[デバッグ]→[アタッチ] を選択して、InterSystems IRIS サーバで実行中のプロセスを選択します。実行中プロセスをアタッチするには、以下のいずれかが必要です。
-
%ALL ロール
-
%System_Attach リソースに対する Use 特権を持つロール
-
デバッグを試みるプロセスと同じ $USERNAME
-
-
[プロジェクト]→[設定]→[デバッグ]→[デバッグ対象] (または [デバッグ]→[デバッグ対象]) を選択して、現在のプロジェクトのデバッグ対象 (デバッグするプログラムまたはルーチンの名前) を設定します。次に、[デバッグ]→[実行] を選択して対象のプログラムを起動し、そのサーバ・プロセスに接続します。
または、コマンド行から zbreak コマンドを入力してデバッグを起動した方が、便利な場合もあります。zbreak の詳細は、"ObjectScript の使用法" の "コマンド行ルーチンのデバッグ" を参照してください。
デバッグ・セッションのサンプル : ルーチンのデバッグ
以下の例では、ルーチンをデバッグする方法を示します。
-
スタジオを起動し、[ファイル]→[プロジェクトの新規作成] を選択して、Project1 という新規プロジェクトを作成します。
-
[ファイル]→[新規作成]→[一般] タブ→[ObjectScript ルーチン] を選択して、新規のルーチンを作成します。
-
このルーチンにコードを入力します。
MyTest ; MyTest.MAC Main() PUBLIC { Set a = 10 For i = 1:1:10 { Set b = i Write b," " } }
-
[ファイル]→[名前を付けて保存] を使用して、新規のルーチンを MyTest.MAC として保存し、コンパイルします。
-
[デバッグ]→[デバッグ対象] タブを選択し、[クラス・メソッドまたはルーチン] を選択します。次に、新規ルーチンのエントリ・ポイントの名前 Main^MyTest を入力して、プロジェクトのデバッグ対象を定義します。
-
ルーチン内のブレークポイントを設定します。Set a = 10 という行にカーソルを置き、F9 (トグル・ブレークポイント) キーを押します。左の余白にブレークポイント・インジケータ が表示されます。
-
[デバッグ]→[実行] を選択して、デバッグを開始します。デバッガがブレークポイントで停止すると、次に実行するコマンドの簡単な説明が、黄色のボックスに表示されます。INT ファイルが新しいウィンドウで開きます。INT ファイルが開かない場合は、[生成されたソースコードを保存] オプションが有効になっていることを確認してください。([ツール]→[オプション] を選択して、左側のペインで [コンパイラ]→[フラグおよび最適化] をクリックし、[生成されたソースコードを保存] を選択します。)
-
ウォッチ・ウィンドウ ([表示]→[ウォッチ]) に b および a を入力して、これらの値を参照できるようにします。
-
[デバッグ]→[ステップイン] (F11) を繰り返し選択してプログラムのステップ実行を行い、b の値が変化することに注意します。
[デバッグ]→[停止] を使用して、デバッグをプログラムの最後で停止できます。
現在のプロジェクトのデバッガ設定
デバッガ設定のいくつかは、現在のプロジェクトで指定したり、保存できるものがあります。これには、以下のものがあります。
-
デバッグ対象
-
ブレークポイント
-
ウォッチポイント
デバッグ対象
デバッグ対象によって、デバッグするプロセスをスタジオに指定します。
プロジェクトのデバッグ対象を指定するには、[プロジェクト]→[設定]→[デバッグ]→[デバッグ対象] を選択するか、[デバッグ]→[デバッグ対象] を選択します。以下のいずれかを選択し、[デバッグ]→[実行] を選択して実行します。また、エディタ・ウィンドウで項目の横にカーソルを置いて、右クリックし、[デバッグ対象として xxxx を設定] を選択して、デバッグ対象を設定することもできます。
[デバッグ]→[実行] の選択時にデバッグするルーチン (およびタグ)、クラス、またはメソッド。例えば、ルーチン MyRoutine 内のタグ Test からデバッグを開始するには、Test^MyRoutine() と入力します。または、##class(MyApp.Person).Test(1) のように、実行するクラス・メソッドの名前を入力します。
[デバッグ]→[実行] の起動時にアクセスする CSP ページ。デバッガは、CSP ページの HTTP 要求を処理するインターシステムズ・サーバ・プロセスに接続します。このオプションを使用して、CSP アプリケーションをデバッグします。例えば、Test.csp ページのコードを実行するには、デバッグ対象として /csp/user/Test.csp と入力します。InterSystems IRIS での CSP ファイルの使用はお勧めしません。
ブレークポイント
プロジェクトのデバッグ対象にデバッグを開始するとき ([デバッグ]→[実行])、プロジェクトによって定義されたブレークポイントはすべて、対象プロセス内で設定されます。
ブレークポイントを設定および削除する最も簡単な方法は、コード行にカーソルを置き、F9 キーを押して、ブレークポイントのオンとオフを切り替えることです。ブレークポイント位置にカーソルを置き、[デバッグ]→[ブレークポイント]→[ブレークポイント切替] を選択することもできます。ブレークポイントを表示し、条件付きブレークポイントを設定するには、[デバッグ]→[ブレークポイント]→[ブレークポイントの表示] を選択します。また、[プロジェクト]→[設定]→[デバッグ]→[ブレークポイント] を使用しても、ブレークポイントを追加、または削除できます。
1 つのルーチンに設定できるブレークポイントの最大数は 20 です。 20 を超えるブレークポイントが設定されると、デバッガに <ROUTINELOAD>^%Debugger.System.1 が表示され、デバッグが停止します。
ウォッチポイント
ウォッチポイントは、値が変化するたび、または強制終了されるたびに、実行を停止する変数です。ウォッチポイントを表示し、条件付きウォッチポイントを設定するには、[デバッグ]→[ブレークポイント]→[ブレークポイントの表示] を選択します。また、[プロジェクト]→[設定]→[デバッグ]→[ウォッチポイント] を使用しても、ウォッチポイントを追加、または削除できます。
ウォッチ・ウィンドウ
ウォッチ・ウィンドウには、変数の値と単純な式を示すテーブルが表示されます。ウォッチ・ウィンドウにリスト表示されているすべての変数と式は、各デバッガ処理 (ステップオーバなど) の後に評価され、その結果として得られた値がウォッチ・ウィンドウの 2 列目に表示されます。デバッガ・オペレーション後に変数の値や式が変更された場合は、赤で表示されます。ウォッチ・リストの変数が評価されるときに未定義の場合、その値は <UNDEFINED> として表示されます。同様に、結果がエラーとなる式でも、その値に対するエラー・メッセージが表示されます。また、デバッガで変数の上にマウスを置くことにより、変数の値を確認することができます。
ウォッチ・ウィンドウに変数や式を追加するには、最初の列で空のセルをダブルクリックし、変数や式を入力します。または、エディタ・ウィンドウでマウスを使用してテキストをハイライト表示し、ウォッチ・ウィンドウの空のセルにドラッグ・アンド・ドロップすることもできます。ウォッチ・ウィンドウのコンテンツを編集する場合は、変数や式をダブルクリックして入力することができます。
以下は、ウォッチ・ウィンドウで入力できる変数や式の例です。
-
a
-
a + 10
-
a(10,10)
-
$L(a)
-
person.Name
ウォッチ・ウィンドウの Value 列に新規の値を入力して、対象プロセスの変数の値を変更することもできます。