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