下記のトピックは、Debug Tool のフルスクリーン・モード・インターフェース について説明し、このインターフェースを使用して共通のデバッグ・タスクを 実行する方法を示します。
ユーザー・プログラムのデバッグは、後でバッチ・モードまたは 行モードを使用する予定になっている場合でも、フルスクリーン・モードで 行うのが、Debug Tool の使用法を学習する上で一番わかりやすい方法です。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
Debug Tool セッション・パネルには、デバッグするプログラムに関する情報を持つヘッダー、コマンド行、および最高 3 つまでの物理ウィンドウが含まれています。物理ウィンドウは、特定のタイプのデバッグ情報を表示する、画面上の専用スペースです。デバッグ情報は、論理ウィンドウと呼ばれる、以下の各タイプに編成されています。
1 つの物理ウィンドウには、1 つの論理ウィンドウのみを割り当てることができます。物理ウィンドウは論理ウィンドウの名前を引き継ぐので、物理ウィンドウに影響を及ぼすコマンド (例えば WINDOW SIZE コマンドなど) を入力するときは、割り当てられている論理ウィンドウの名前を指定して、物理ウィンドウを識別します。物理ウィンドウは閉じる (表示しない) ことができますが、常に 1 つ以上の物理ウィンドウが開かれている必要があります。
下記の Debug Tool セッション・パネルは、3 つの物理ウィンドウを含んでいるデフォルトのレイアウトを示しています。1 つはモニター・ウィンドウ 1 用、2 番目はソース・ウィンドウ 2 用、および 3 番目はログ・ウィンドウ 3 用です。
COBOL LOCATION: DTAM01 :> 109.1
Command ===> Scroll ===> PAGE
MONITOR -+----1----+----2----+----3----+----4----+----5----+----6- LINE: 1 OF 7
**************************** TOP OF MONITOR **********************************
----+----1----+----2----+----3----+----4----
0001 1 NUM1 0000000005
0002 2 NUM4 '1111' 1
0003 3 WK-LONG-FIELD-2 '123456790 223456790 323456790 423456790 5234
0004 56790 623456790 723456790 8234567890 9234567
0005 90 023456790 123456790 223456790 323456790 4
0006 23456790 5234567890 623456790 723456790 8234
SOURCE: DTAM01 ---1----+----2----+----3----+----4----+----5--- LINE: 107 OF 196
107 * SINGLE DATAITEM IN A STRUCTURE .
108 *------------------------------------------------------------- .
109 ADD 1 TO AA-NUM1 2 .
110 .
111 *------------------------------------------------------------- .
112 * SINGLE DATAITEM IN A STRUCTURE - QUALIFIED .
LOG 0----+----1----+----2----+----3----+----4----+----5----+---- LINE: 40 OF 43
0040 MONITOR
0041 LIST NUM4 ;
0042 MONITOR 3
0043 LIST WK-LONG-FIELD-2 ;
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
Debug Tool セッション・パネルの最初の数行は、コマンド行と、デバッグするプログラムに関して情報を表示するヘッダー・フィールドです。
以下は、C プログラムの場合のヘッダー例を示しています。
C 1 LOCATION: MYID.SOURCE(TSTPGM1):>248 2 Command ===> 3 SCROLL ===> PAGE 4 5
以下は COBOL プログラムの場合のヘッダー例を示しています。
COBOL 1 LOCATION: XYZPROG::>SUBR:>118 2 Command ===> 3 SCROLL ===> PAGE 4 5
·
·
·
ヘッダー・フィールドの説明は次のとおりです。
上記の C の例では、MYID.SOURCE(TSTPGM1) の実行が行 248 で中断されています。
上記の COBOL の例では、XYZPROG の実行が XYZPROG::>SUBR:>118、すなわちサブルーチン SUBR の行 118 で中断されています。
記録されたステートメントを再生する場合、「LOCATION」という語は、PBK<LOC または PBK>LOC により置き換えられます。< と > のシンボルは、記録されたステートメントが逆方向 (<) それとも順方向 (>) で再生されているのかを示します。
Enterprise PL/I コンパイラーまたは C/C++ コンパイラーを使用する場合は、コンパイル単位名が、ソースの全体のデータ・セット名になります。CU 名が長形式で表示されるように、LONGCUNAME が ON (デフォルト) に設定されている場合、名前が切り捨てられることがあります。 ご使用の PL/I プログラムが以下のコンパイラーによってコンパイルされたものであり、しかもそれが以下の環境で実行される場合は、package ステートメントまたはメイン・プロシージャーの名前が表示されます。
このフィールドの値は、SCROLL UP、SCROLL DOWN、SCROLL LEFT、および SCROLL RIGHT の各スクロール・コマンドに適用されるオペランドです。 表 16 に、すべてのスクロール・コマンドをリストします。
| コマンド | 説明 |
|---|---|
| n | n 行ずつスクロールします。 |
| HALF | ページの半分だけスクロールします。 |
| PAGE | 1 ページ全体をスクロールします。 |
| TOP | データの上部にスクロールします。 |
| BOTTOM | データの下部にスクロールします。 |
| MAX | データの限界までスクロールします。 |
| LEFT x | x 文字分、左へスクロールします。 |
| RIGHT x | x 文字分、右へスクロールします。 |
| CURSOR | カーソルの位置。 |
| TO x | 行 x までスクロールします。ここで x は整数です。 |
1 SOURCE: MULTCU ---1----+----2----+----3----+----4----+----5----+ LINE: 70 OF 85 70 PROCEDURE DIVISION. . 71 ************************************************************** . 72 * THIS IS THE MAIN PROGRAM AREA. This program only displays . 73 * text. 3 . 74 ************************************************************** . 2 75 DISPLAY "MULTCU COBOL SOURCE STARTED." UPON CONSOLE. . 76 MOVE 25 TO PROGRAM-USHORT-BIN. . 77 MOVE -25 TO PROGRAM-SSHORT-BIN. . 4 78 PERFORM TEST-900. . 79 PERFORM TEST-1000. . 80 DISPLAY "MULTCU COBOL SOURCE ENDED." UPON CONSOLE. .
ソース・ウィンドウには、ソース・ファイルまたはソース・リストが表示されます。ソース・ウィンドウは次に説明する 4 つの部分で構成されています。
接尾部域は任意に選択できます。接尾部域を表示するには、SET SUFFIX ON と入力します。接尾部域を隠す 場合は SET SUFFIX OFF と入力します。また、プロファイル設定パネルのソース・リスト接頭部 フィールドで オンまたはオフに設定することもできます。
各ウィンドウで表示されるラベル付きのヘッダー行には、目盛りと 行カウンターが示されます。ウィンドウを左右にスクロールすると目盛りもスクロールしますので、ウィンドウに表示される桁が示されます。行カウンターには、ウィンドウの最上部の行番号とそのウィンドウ内の 行の合計数が示されます。ウィンドウを上下にスクロールすると、行カウンターはそれに応じて、現在その ウィンドウで表示されている最上部の行番号を示します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
モニター・ウィンドウには、SET AUTOMONITOR コマンドまたは MONITOR コマンドで選択した変数の名前と値が表示されます。
下図に、デフォルトのモニター・ウィンドウと、モニター・ウィンドウの各部分を示します。
COBOL LOCATION: DTAM01 :> 109.1
Command ===> Scroll ===> PAGE
MONITOR -+----1----+----2----+----3----+----4----+----5----+----6- LINE: 1 OF 7
******************************** TOP OF MONITOR *******************************
-----+----1----+----2----+- 1 --3----+----4--
0001 1 NUM1 0000000005
0002 2 NUM4 '1111' 2
0003 3 WK-LONG-FIELD-2 '123456790 223456790 323456790 423456790 5234
0004 3 56790 623456790 723456790 8234567890 9234567
0005 90 023456790 123456790 223456790 323456790 4
0006 4 23456790 5234567890 623456790 723456790 8234
0007 4 HEX-NUM1 X'ABCD 1234'
MONITOR LIST、MONITOR QUERY、MONITOR DESCRIBE、SET AUTOMONITOR の各コマンドを入力した場合、Debug Tool は出力をモニター・ウィンドウに表示します。 このウィンドウが開いていない場合、MONITOR あるいは SET AUTOMONITOR コマンドを入力すると Debug Tool がこのウィンドウを開きます。
MONITOR コマンドは無制限の量の出力を生成でき、記憶装置の容量によって制約されるだけですが、モニター・ウィンドウで 表示できるのは、出力の最大 1000 行までのスクロール可能な行です。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
LOG 0----+----1----+----2----+----3----+----4----+----5----+----6 LINE: 6 OF 14 0007 MONITOR 0008 LIST PROGRAM-USHORT-BIN ; 0009 MONITOR 0010 LIST PROGRAM-SSHORT-BIN ; 0011 AT 75 ; 0012 AT 77 ; 0013 AT 79 ; 0014 GO ;
ログ・ウィンドウには、ユーザーと Debug Tool との対話が記録 され、表示されます。
デバッグ・セッションの始めに、以下のファイルのいずれかを指定していると、 これらのファイルから出されたコマンドの始めと終わりを示す メッセージがログ・ウィンドウに表示されます。
グローバル設定ファイルが存在する場合、そのグローバル設定ファイルのデータ・セット名 が表示されます。
次のコマンドはログ・ウィンドウに記録されません。
あるファイルに関して SET INTERCEPT ON が有効な場合、そのファイルの出力もログ・ウィンドウに表示されます。
オプションで SET ECHO OFF を指定することにより、ログから STEP および GO コマンドを除外することもできます。
SCROLL コマンドや WINDOW コマンドのように、IMMEDIATE とともに使用できるコマンドは、ログ・ウィンドウから除外されます。
デフォルトによって、ログ・ウィンドウには 1000 行が表示用に確保 されます。デフォルト値は、以下のいずれかの方法で変更することができます。
最大行数は、使用可能なストレージのサイズによって決まります。
各ウィンドウで表示されるラベル付きのヘッダー行には、目盛りと 行カウンターが示されます。ウィンドウを左右にスクロールすると目盛りもスクロールしますので、ウィンドウに表示される桁が示されます。行カウンターには、ウィンドウの最上部の行番号とそのウィンドウ内の 行の合計数が示されます。ウィンドウを上下にスクロールすると、行カウンターはそれに応じて、現在その ウィンドウで表示されている最上部の行番号を示します。
メモリー・ウィンドウには、メモリーの内容が表示されます。下図に、メモリー・ウィンドウの各部分を示します。
MEMORY---1----+----2----+----3----+----4----+----5----+----6----+----7----+- 1 History: 24702630 2505A000 2 Base address: 265B1018 Amode: 31 +00000 265B1018 11C3D6C2 D6D34040 4011D3D6 C3C1E3C9 | .COBOL .LOCATI | +00010 265B1028 D6D57A12 D7D9D6C7 F1407A6E 40F4F44B | ON:.PROG1 :> 44. | +00020 265B1038 F1404040 40404040 40404040 40404040 | 1 | +00030 265B1048 40404040 40404040 40404040 40404040 | 6 | +00040 265B1058 40404040 40404040 40404040 40404040 | | +00050 265B1068 11C39694 94819584 117E7E7E 6E009389 | .Command.===>.li | +00060 265B1078 A2A340A2 A3969981 87854DA2 A399F16B | st storage(str1, | +00070 265B1088 F3F25D40 40404040 40404040 40404040 | 32) | 3 4 5
以下のセクションは、まとめてメモリー・ダンプ域と呼ばれます。
メモリー・ウィンドウに表示できる最大行数は、ウィンドウのサイズまでに制限されます。SCROLL DOWN および SCROLL UP コマンドを使用して、メモリーの続きを表示できます。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
Debug Tool の外観または動作に対する設定値がある場合は、 それらのオプションを設定ファイルに設定することができます。 セッション・パネルのウィンドウのレイアウトを変更したり、PF キーに特定のアクション を設定したり、あるいは、セッション・パネルで使用するカラーを変更することができます。カスタマイズした設定値の設定ファイルへの保存に、設定ファイルを指定する方法、 および Debug Tool にその設定ファイルを使用させる方法についての説明があります。
サイトにすべてのユーザーに使用させる設定値がある場合、システム管理者は、 これらの設定値をグローバル設定ファイルに設定することができます。 Debug Tool は、開始するときに、以下のステップを実行します。
Debug Tool がこれらのファイルを処理する順序のために、設定ファイルおよびコマンド・ファイルに 指定した設定により、グローバル設定ファイルの設定がオーバーライドされる可能性があります。
Debug Tool は、ユーザーがプログラムをどのように準備したかに応じて、ソース・ファイル、リスト・ファイル、または分離デバッグ・ファイルを使用して、ソース・ウィンドウにソースを表示します。
Debug Tool を開始したとき、ソースが表示されない場合は、ソースを検出して表示する方法について、ソース・ウィンドウに表示するファイルの変更を参照してください。
デバッグ・データがない場合は、SET DISASSEMBLY コマンドを入力することにより逆アセンブル・コードを表示できます。
ご使用のプログラムに DB2® または CICS® コーディングが入っている場合、別ファイルを使用する必要が生じる場合があります。詳細は、DB2 プログラムの準備または CICS プログラムの準備を参照してください。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
ここでは、ソース・ウィンドウに表示されるファイルを変更する方法をいくつか説明します。ここでは、表示したいソース・ファイル、リスト・ファイル、または分離デバッグ・ファイルの名前が既に分かっていることを想定しています。ファイルの名前が分からない場合は、ファイル名の見つけ方について、Debug Tool に認識されるコンパイル単位のリストの表示を参照してください。
ソース・ウィンドウに表示されるファイルを変更する前に、付録B. Debug Tool によるソース、リスト、または 分離デバッグ・ファイル の検索方法を読んで、Debug Tool がソース・ファイル、リスト・ファイル、および分離デバッグ・ファイルを見つける方法を確実に理解しておいてください。
ソース・ウィンドウに表示されるファイルを変更するには、以下のいずれかのオプションを選択します。
ソース識別パネルで、ソース・ウィンドウに現れるソース・ファイル、リスト・ファイル、および分離デバッグ・ファイルをそれらのコンパイル単位と関連付けることができます。
これを繰り返し実行する必要がある場合は、ログ・ウィンドウで生成された SET SOURCE ON コマンドを使用できます。これらのコマンドをファイルに保存し、Debug Tool の今後の呼び出しの際には、USE コマンドを使用してこれらのコマンドを再発行することができます。
名前変更されたファイルを Debug Tool に指し示すには、SET DEFAULT LISTINGS コマンドを使用して名前変更されたファイルを指定します。名前変更されたファイルはコンマで区切られ、括弧で囲まれています。例えば、ファイル SVTRSAMP.TS99992.MYPROG、PGRSAMP.LLTEST.PROGA、および RRSAMP.CRTEST.PROGR を Debug Tool に指し示す場合は、次のコマンドを入力します。
SET DEFAULT LISTINGS (SVTRSAMP.TS99992.MYPROG, PGRSAMP.LLTEST.PROGA, RRSAMP.CRTEST.PROGR) ;
DEBUG(FORMAT(DWARF)) コンパイラー・オプションを使用してコンパイルされた C++ プログラムについて、このトピックでは、ソース・ファイルの場所の指定方法を説明します。DEBUG(FORMAT(DWARF)) コンパイラー・オプションを使用してプログラムをコンパイルした場合、.dbg ファイルへのアクセスも必要になります。 このファイルを移動または名前変更する場合は、その新しい名前または場所を EQADEBUG DD ステートメントを使用して指定するか、EQAUEDAT ユーザー出口をコーディングしてください。UNIX® システム・サービスの HFS ファイル・システムを使用している場合は、.dbg ファイルを移動できません。
コマンドの入力またはセッション・パネルの表示内容の修正は、図 1、および 図 2 に示すように、複数の区域で行うことができます。
C LOCATION: MYID.SOURCE(ICFSSCU1) :> 89 Command ===> 1 Scroll ===> PAGE 2 MONITOR --+----1----+----2----+----3----+----4----+----5----+----6 LINE: 1 OF 2 ******************************* TOP OF MONITOR ******************************** ----+----1----+----2----+----3----+----4---- 0001 1 VARBL1 10 0002 2 VARBL2 20 ****************************** BOTTOM OF MONITOR ****************************** SOURCE: ICFSSCU1 - 3 --+----2----+----3----+----4----+----5----+ LINE: 81 OF 96 81 main() . 82 { . 83 int VARBL1 = 10; . 4 84 int VARBL2 = 20; . 85 int R = 1; . 86 5 . 87 printf("--- IBFSSCC1 : BEGIN¥n"); . 88 do { . 89 VARBL1++; . 90 printf("INSIDE PERFORM¥n"); . 91 VARBL2 = VARBL2 - 2; . 92 R++; . LOG 6 --+----1----+----2----+----3----+----4----+----5----+----6 LINE: 7 OF 15 0007 STEP ; 0008 AT 87 ; 0009 MONITOR 0010 LIST VARBL1 ; 0011 MONITOR 0012 LIST VARBL2 ; 0013 GO ; 7 0014 STEP ; 0015 STEP ;
COBOL LOCATION: PROG1 :> 44.1 Command ===> 1 Scroll ===> CSR 2 MONITOR -+----1----+----2----+----3----+----4----+----5----+----6- LINE: 1 OF 2 ******************************* TOP OF MONITOR ******************************** ----+----1----+----2----+----3----+----4---- 0001 1 STR1 'ONE ' 0002 2 STR3 'THREE' ****************************** BOTTOM OF MONITOR ****************************** SOURCE: PROG1 - 3 -1----+----2----+----3----+----4----+----5----+ LINE: 43 OF 53 43 MOVE "ONE" TO STR1. MOVE "TWO" TO STR2. MOVE "THREE" TO S . 44 MOVE "FOUR" TO STR4. MOVE "FIVE" TO STR5. . 45 PERFORM UNTIL R = 9 . 4 46 MOVE "TOP" TO STR1 MOVE "BEG" TO STR2 MOVE "UP" TO STR3 . 47 ADD 1 TO VARBL1 . 48 SUBTRACT 2 FROM VARBL2 5 . 49 ADD 1 TO R . 50 MOVE "BOT" TO STR1 MOVE "END" TO STR2 MOVE "DOW" TO STR . 51 END-PERFORM. . 52 MOVE "DONE" TO STR1. MOVE "END" TO STR2. MOVE "FIN" TO ST . 53 STOP RUN. . ****************************** BOTTOM OF SOURCE ******************************* MEMOR 6 -+----2----+----3----+----4----+----5----+----6----+----7----+----8----+ History: 329D47DA 329D65CC 329D88AB 329D8000 329D90E8 8 Base address: 329D90E8 Amode: 31 +00000 329D90E8 D6D5C540 40000000 E3E6D640 40000000 | ONE ...TWO ... | +00010 329D90F8 E3C8D9C5 C5000000 00000000 00000000 | THREE........... | +00020 329D9108 00000000 00000000 00000000 00000000 | ................ | +00030 329D9118 00000000 00000000 00000000 00000000 | ................ | +00040 329D9128 00000000 00000000 00000000 00000000 | ................ | +00050 329D9138 00000000 00000000 00000000 00000000 | ................ | +00060 329D9148 00000000 00000000 00000000 00000000 | ................ | +00070 329D9158 00000000 00000000 00000000 00000000 | ................ | PF 1:ZOOM MEM 2:STEP 3:QUIT 4:SWAP 5:MEMORY 6:BREAK PF 7:UP 8:DOWN 9:GO 10:ZOOM SRC 11:ZOOM LOG 12:RETRIEVE
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
セッション・パネルの複数の有効な入力域にコマンドを入力して Enter を 押すと、入力域は次の優先順位に従って処理されます。
コマンド・フィールドにはどの Debug Tool コマンドでも入力する ことができます。どの TSO コマンドでも、接頭部として SYSTEM または TSO を付けて入力することができます。コマンドの最大長は、SBCS 文字では 48、DBCS 文字 では 23 です。
長いコマンドを入力する場合、Debug Tool は、コマンド継続文字 SBCS ハイフン (-) を提供しています。現行のプログラム言語が C および C++ の場合、継続文字として円記号 ( ¥ ) も使用できます。
Debug Tool では、コマンドが完結しない場合、自動継続もできます。例えば、左中括弧 ({) で始まったコマンドに対応する右中括弧 (}) がない場合です。コマンドを継続する必要がある場合には、Debug Tool の MORE ===> プロンプトを使用すると、コマンド行がもう一行あることになります。コマンドを完成するまで、継続文字を使用して追加のコマンド行を 要求し続けることができます。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
Debug Tool セッション中でも、SYSTEM コマンドを使用して、基本オペレーティング・システムにアクセス可能です。 SYSTEM コマンドに続くストリングは、オペレーティング・システムに渡されます。TSO 環境では TSO と通信できます。例えば、デバッグ・セッション中に TSO カタログ・リストを見たい場合は、SYSTEM LISTC; と入力します。
システム・コマンドを入力するときは、以下のことに従わなければなりません。
SYSTEM ISPF;これにより ISPF が開始され、ホスト・エミュレーター画面に ISPF パネルが表示されるので、そこからコマンドを出すことができます。
CICS の場合のみ: SYSTEM コマンドはサポートされていません。
TSO は、SYSTEM コマンドの同義語です。TSO コマンドの短縮形は許可されません。
接頭部コマンド と呼ばれる特定のコマンドは、ソース・ウィンドウまたはモニター・ウィンドウ内の固有の行の接頭部域に入力し、コマンドがそれらの行にのみ影響を及ぼすようにすることができます。例えば、行 8 の接頭部域に AT コマンドを入力し、Enter を押すと、Debug Tool は行 8 だけにステートメント・ブレークポイントを設定します。
以下の接頭部コマンドは、ソース・ウィンドウの接頭部域に入力できます。
以下の接頭部コマンドは、自動モニター・セクションも含め、モニター・ウィンドウの接頭部域に入力できます。
ソース・ウィンドウに接頭部コマンドを入力するには、以下のステップを実行します。
モニター・ウィンドウに接頭部コマンドを入力するには、以下のステップを実行します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
メモリー・ウィンドウに複数のコマンドおよび変更を入力できます。Debug Tool は、次のリストで説明するように、ユーザー入力をメモリー・ウィンドウの一番上から順に、1 行ずつ処理します。
コマンドのなかには、カーソルの位置に依存するものがあります。これらのコマンドはカーソル移動に影響される コマンドと呼ばれ、キーワード CURSOR を含むすべてのコマンド (AT CURSOR、DESCRIBE CURSOR、FIND CURSOR、LIST CURSOR、SCROLL...CURSOR、TRIGGER AT CURSOR、WINDOW...CURSOR) が含まれます。
カーソル移動に影響されるコマンドを入力するためには、コマンド行に コマンドを入力し、ソース・ウィンドウ内のそのコマンドを機能させる 位置 (例: ステートメントの先頭または verb) にカーソルを位置付け、Enter キーを押してください。
カーソル移動に影響されるコマンドを PF キーに割り当てて使用することも 可能です。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
カーソル移動に影響されるコマンドは、その他のフルスクリーン・タスクと同様に、PF キーにコマンドを割り当てることにより、迅速に発行することができます。この方法で、WINDOW CLOSE、LIST、CURSOR、SCROLL TO、DESCRIBE ATTRIBUTES、RETRIEVE、FIND、WINDOW SIZE、およびスクロール・コマンド (SCROLL UP、DOWN、LEFT、RIGHT) を発行することができます。PF キーの使用で、タスクの実行が便利かつ容易になります。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
次の表は初期の PF キー設定を示しています。
| PF キー | ラベル | 定義 | 使用法 |
|---|---|---|---|
| PF1 | ? | ? | Debug Tool コマンド構文に関するオンライン・ヘルプの表示 |
| PF2 | STEP | STEP | ユーザー・プログラムの実行またはステップスルー |
| PF3 | QUIT | QUIT | フルスクリーン・モード・デバッグ・セッションの終了 |
| PF4 | LIST | LIST | Debug Tool に認識されるコンパイル単位のリストの表示 |
| PF4 | LIST | LIST variable_name | 変数の値を表示およびモニターする |
| PF5 | FIND | IMMEDIATE FIND | ウィンドウ内のストリングの検出 |
| PF6 | AT/CLEAR | AT TOGGLE CURSOR | 行でユーザー・プログラムを停止するブレークポイントの設定 |
| PF7 | UP | IMMEDIATE UP | 物理ウィンドウのスクロール |
| PF8 | DOWN | IMMEDIATE DOWN | 物理ウィンドウのスクロール |
| PF9 | GO | GO | ユーザー・プログラムの実行またはステップスルー |
| PF10 | ZOOM | IMMEDIATE ZOOM | 画面全域までのウィンドウのズーミング |
| PF11 | ZOOM LOG | IMMEDIATE ZOOM LOG | 画面全域までのウィンドウのズーミング |
| PF12 | RETRIEVE | IMMEDIATE RETRIEVE | 直前のコマンドの検索 |
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
最後に入力したコマンドを検索するには、PF12 (RETRIEVE) を 入力します。検索されたコマンドはコマンド行に表示されます。そのコマンドを変更し、Enter を押すと、変更したコマンドを発行する ことができます。
それ以前のコマンドを次々に表示させたい場合は、PF12 を 押すと、各コマンドが順に検索されます。検索したコマンドがコマンド行に対して長過ぎる場合は、最後の行のみが表示 されます。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
ログ・ウィンドウ内およびソース・ウィンドウ内の行を使用して、新しいコマンドを構成できます。
ログ・ウィンドウまたはソース・ウィンドウ内の行からコマンドを構成するには、以下のステップを実行します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
CURSOR コマンドとスクロール・コマンドを使用すると、どのウィンドウ内でもナビゲートができます。スクロール・コマンドには、SCROLL UP、DOWN、LEFT、RIGHT、TO、NEXT、TOP、および BOTTOM があります。 また、FIND コマンドを使用して、文字ストリングを探索すると、指定されたストリングまで自動的にスクロールされます。
これらのいずれかのコマンドがどのウィンドウに対して影響するのかは、いくつかの要因のうちの 1 つによって決まります。コマンドの入力時にウィンドウ名 (LOG、MEMORY、MONITOR、または SOURCE) を指定した場合、そのウィンドウが処理対象になります。カーソル指向のコマンドの場合には、そのカーソルを含んでいるウィンドウに コマンドが作用します。ウィンドウ名を指定せず、またカーソルがどのウィンドウにも入っていない場合 には、コマンドが影響するウィンドウは Profile Settings パネルのデフォルト・ ウィンドウおよびデフォルトのスクロール量 の設定値に よって決まります。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
モニター・ウィンドウ、ソース・ウィンドウまたはログ・ウィンドウから コマンド行にカーソルを迅速に移動させたり戻したりするには、CURSOR コマンドを使用してください。このコマンドおよびその他のいくつかのカーソル指向のコマンドは、PF キーに 割り当てると非常に効果的に使用することができます。CURSOR コマンドを PF キーに割り当てた後は、その PF キーを押してカーソルを移動させます。CURSOR コマンドを入力したときにカーソルがコマンド行にない場合は、カーソルは コマンド行に移動します。カーソルを直前の位置に戻すには、再度 CURSOR PF キーを押します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
Debug Tool には 4 つの論理ウィンドウがありますが、一度に表示できるのは、最大で 3 つの物理ウィンドウだけです。コマンド行に WINDOW SWAP MEMORY LOG コマンドを入力することにより、メモリー・ウィンドウとログ・ウィンドウを交互に切り替えることができます。物理ウィンドウ内をナビゲートするには、スクロール・コマンドを入力します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
コマンドまたは PF キーを使用することにより、物理ウィンドウをスクロールすることができます。 どちらの方法でも、コマンドの影響を受ける物理ウィンドウを決めるにあたって、カーソルの配置が重要な役割を演じます。
コマンドを使用して物理ウィンドウをスクロールするには、以下のステップを実行します。
ウィンドウまたは領域を左右にスクロールした場合、Debug Tool はウィンドウに表示される列を示すために、ウィンドウまたは領域の目盛りを調整します。 ウィンドウを上下にスクロールすると、行カウンターはそれに応じて、現在そのウィンドウに表示されている最上部の行番号を示します。メモリー・ウィンドウで、上下にスクロールした場合、新しい情報を表示するために、メモリー・ダンプ域のすべてのセクションが調整されます。
スクロールしたい物理ウィンドウを示すために、コマンドを使用して、上記のステップ 2 と 3 を結合できます。例えば、モニター・ウィンドウを表示している物理ウィンドウ内で 5 行上へスクロールしたい場合は、SCROLLUP 5 MONITOR というコマンドを入力します。
PF キーを使用して物理ウィンドウをスクロールするには、以下のステップを実行します。
特定の物理ウィンドウへカーソルを移動しなかった場合は、デフォルトの論理ウィンドウがスクロールします。どの論理ウィンドウがデフォルトの論理ウィンドウであるかを知るには、QUERY DEFAULT WINDOW コマンドを入力します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
WINDOW ZOOM コマンドまたは PF キーを使用して、物理ウィンドウを全画面まで拡大できます。物理ウィンドウを WINDOW ZOOM コマンドで拡大するには、WINDOW ZOOM と、その直後に拡大したい物理ウィンドウの名前を入力し、Enter を押します。物理ウィンドウを元のサイズに縮小するには、再び WINDOW ZOOM コマンドを入力します。例えば、モニター・ウィンドウを表示している物理ウィンドウを拡大したい場合は、WINDOW ZOOM コマンドを入力します。その物理ウィンドウのサイズを元のサイズに縮小するには、WINDOW ZOOM コマンドを入力します。
PF キーを使用して物理ウィンドウを拡大するには、拡大したい物理ウィンドウの中へカーソルを移動し、PF10 (ZOOM) キーを押します。 例えば、ソース・ウィンドウを表示している物理ウィンドウを拡大したい場合は、カーソルをソース・ウィンドウ内のどこかへ移動し、PF10 (ZOOM) キーを押します。その物理ウィンドウのサイズを元のサイズに縮小するには、PF10 (ZOOM) キーを押します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
特定の行をウィンドウの最上部に表示するには、ウィンドウ接頭部域 に示されているステートメント番号を指定して SCROLL TO コマンド を使用します。コマンド行に SCROLL TO n (n は 行番号) と入力し、Enter を押します。
例えば、行 345 をウィンドウの最上部に移動させたい場合には、コマンド行に SCROLL TO 345 と入力します。選択されたウィンドウが縦方向にスクロールし、指定の行がそのウィンドウの最上部に表示されます。
「Source」、「Monitor」、または「Log」ウィンドウの中ではストリングを検索対象とすることができます。検索を開始する場所を指定したり、検索を前向きで行うか後向きで行うかを指定することができます。さらに、ソース・ウィンドウに対して、検索する桁を指定することができます。 検索されるデフォルト・ウィンドウは、SET DEFAULT WINDOW コマンドで指定されたウィンドウか、または「Profile Settings」パネルの「Default window」エントリーで指定されたウィンドウです。検索方向のデフォルトは前向きです。 ソース・ウィンドウの場合、SET FIND BOUNDS コマンドを使用して別の境界セットを指定しない限り、桁のデフォルト境界は 1 から * です。
デフォルトの検索方向を使用してデフォルト・ウィンドウ範囲内のストリングを見つけるには、以下のステップを行います。
直前に行った検索を繰り返したい場合は、PF5 キーを入力します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
Debug Tool FIND コマンドは、ISPF FIND コマンドがその検索開始に使用するのと同じ検索開始用規則の多くを使用します。Debug Tool はカーソル位置の後ろの最初の位置で検索を開始します。
最後まで到達すると、Debug Tool は最後まで到達した旨を示すメッセージを表示します。PF5 キーを押して FIND コマンドを繰り返すと、先頭から検索を開始します。
後向きの検索を行っていて先頭に到達すると、Debug Tool は先頭まで到達した旨を示すメッセージを表示します。 PF5 キーを押して FIND コマンドを繰り返すと、最後から検索を開始します。
このストリングには、どのような文字の組み合わせ、数字、およびシンボルが入っていても構いません。 ただし、このストリングの中に以下のいずれかの文字が入っている場合は、引用符 (") またはアポストロフィ (') で囲む必要があります。
引用符 (") とアポストロフィ (') のどちらを使用するかを判別するには、以下の規則を使用します。
別ウィンドウにある同一ストリングを検索するには、コマンド ( FIND * window_name) を入力します。
FIND コマンドとストリングを入力し、カーソルをモニター・ウィンドウ内に置きます。Debug Tool は、ストリングが検出されるか、データの終わりに到達するまで、モニター値域のスクロール対象データを含むモニター・ウィンドウ全体を検索します。
別方向にある同一ストリングを検索するには、検索対象ストリングと PREV または NEXT キーワードを指定して FIND * コマンドを入力します。 例えば、以下のコマンドを使用すると、ストリング ("RecordDate") を後向きに検索します。
FIND RecordDate PREV ;
Debug Tool によって、ソース・ウィンドウ内の限定された数の桁が検索されるように指定することができます。これは、大容量のソース・ファイルを検索する場合に、一部のテキストが特定の列で構成されている場合に役立つことがあります。 現行の検索、またはすべての検索に対して、使用する境界を指定することができます。 ソースの桁の位置合わせは、元のソース・コードと一致しない場合があります。 FIND コマンドの桁仕様は、元のソース・コードではなく、ソース・ウィンドウに表示されているスケールに関連します。
現在の検索に対して境界を指定するには、FIND コマンドを入力して、検索ストリングと境界を指定します。 例えば、7 桁目から 12 桁目まで、"ABC" を検索するには、以下のコマンドを入力します。
FIND "ABC" 7 12;
8 桁目以降で開始する "VAR1" を検索するには、以下のコマンドを入力します。
FIND "VAR1" 8 *;
1 桁目から開始する "VAR1" を検索するには、以下のコマンドを入力します。
FIND "VAR1" 1;
すべての検索に使用されるデフォルトの境界を指定するには、SET FIND BOUNDS コマンドを入力して、左と右の境界を設定します。 SET FIND BOUNDS コマンドを入力したら、境界を指定せずに FIND コマンドを入力するたびに、Debug Tool は、指定されたストリングをこれらの境界内のみで検索します。 例えば、Debug Tool によって、常に、7 桁目から 52 桁目までのテキストが検索されるように指定するには、以下のコマンドを入力します。
SET FIND BOUNDS 7 52;このように指定すると、境界を指定せずに FIND コマンドを入力するたびに、Debug Tool は、7 桁目から 52 桁目のみを検索するようになります。
境界をデフォルト設定 (デフォルトは 1 から * まで) にリセットするには、以下のコマンドを入力します。
SET FIND BOUNDS;
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
別ウィンドウにあるストリングを後向きで検索するには、検索対象ストリング、PREV キーワード、およびそのウィンドウ名を指定して FIND コマンドを入力します。 例えば、以下のコマンドを入力すると、「Log」ウィンドウ内にあるストリング ("EmployeeName") を検索します。
FIND EmployeeName PREV LOG;
8 桁目から開始する COBOL 段落名を検索するには、以下のコマンドを入力します。
FIND paraa 8;
Debug Tool によって、8 桁目から開始するストリングのみが検索されます。
12 桁目から 72 桁目までの COBOL 領域 B にある COBOL 段落名への参照を検索するには、以下のコマンドを入力します。
FIND paraa 12 72;
Debug Tool によって、12 桁目から 72 桁目で開始および終了するストリングのみが検索されます。
いろいろなソース・ファイルを表示し、スクロールした後、以下のコマンドのいずれかを入力して、実行を停止した場所に戻ることができます。
SET QUALIFY RESET
Q LOC
LIST %LINE
ここでは、メモリー・ウィンドウを通じて使用可能なナビゲーション援助機能について説明します。これらの機能は、他のウィンドウでは使用できません。
次のいずれかのオプションを実行することにより、メモリー・ウィンドウを表示できます。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
新しい MEMORY コマンドを入力するか、G コマンドを使用するたびに、現在の基底アドレスがヒストリー域内で右および下へ移動します。ヒストリー域には、最大で 8 つの基底アドレスを保持できます。ヒストリー域が満杯の場合、新しい基底アドレスを入力すると、Debug Tool は最も古い基底アドレス (ヒストリー域の一番下の右端の部分にあるもの) をヒストリー域から除去し、新しい基底アドレスを左の一番上に配置します。ヒストリー域は、デバッグ・セッション中、持続します。
ヒストリー域を使用してメモリー・ウィンドウ内をナビゲートするには、ヒストリー域でアドレスに G または g コマンドを上書きし、Enter を押します。Debug Tool は新しいアドレスから始まるメモリー・ダンプ・データを表示します。 ヒストリー域をクリアするには、CLEAR MEMORY コマンドを入力します。 ヒストリー域のエントリーは、そのエントリーに R または r コマンドを上書きすることによって除去できます。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
以下のいずれかの方法を使用して、新しい基底アドレスを指定できます。
16 進データ列に G コマンドを上書きするときは、アドレスが 1 つの列に完全に収まり、複数の列にまたがらないことを確認してください。例えば、次の画面で、16 進アドレス X'329E6470' は 2 つの場所に表示されます。
MEMORY---1----+----2----+----3----+----4----+----5----+----6----+----7----+- History: 24702630 2505A000 Base address: 265B1018 Amode: 31 +00000 265B1018 40404040 40404040 40404040 40404040 | | +00010 265B1028 4040329E 64704040 40404040 40404040 | .. .. | +00020 265B1038 40404040 40404040 40404040 40404040 | | +00030 265B1048 40404040 40404040 40404040 40404040 | | +00040 265B1058 40404040 40404040 329E6470 40404040 | .... | +00050 265B1068 40404040 40404040 40404040 40404040 | | +00060 265B1078 40404040 40404040 40404040 40404040 | | +00070 265B1088 40404040 40404040 40404040 40404040 | |2 行目の 1 列目に G コマンドを上書きすると、Debug Tool は基底アドレスを X'4040329E' に設定しようとします。G コマンドを 2 行目の 2 列目に入力すると、Debug Tool は基底アドレスを X'64704040' に設定しようとします。基底アドレスを X'329E6470' に設定したい場合は、次のいずれかのオプションを実行します。
コマンド・ファイルは、デバッグ・セッションを再生したり、中断したセッションを再開したりする場合に利用すると便利なメソッドです。以下のいずれかの方法を使用して、コマンド・ファイルを作成します。
作成するコマンド・ファイルが、複数の異なるプログラム言語で作成されたアプリケーション・プログラムで使用される可能性がある場合は、 プログラム言語中立 の Debug Tool コマンドを使用するとよいでしょう。 プログラム言語中立のコマンドを作成する際には、以下のガイドラインが役立ちます。
PL/I プログラムでは、コマンド・ファイルの 73 桁目から 80 桁目にシーケンス番号 がある場合、コマンド・ファイルの中の最初のコマンドとして、またはコマンド・ファイル を使用する前に、SET SEQUENCE ON コマンドを入力する必要があります。 このコマンドを入力した後では、Debug Tool は 73 桁目から 80 桁目のデータをコマンドとして 解釈しません。 後で、73 桁目から 80 桁目をコマンドとして Debug Tool に解釈させたい場合は、コマンド SET SEQUENCE OFF を入力してください。
C および C++ プログラムの場合、ブロックを参照するコマンドを使用するときは、同じプログラムが ISD または DWARF コンパイラー・オプションのいずれかでコンパイルされる場合、ブロック名が異なる場合があります。使用するプログラムが ISD コンパイラー・オプションでコンパイルされる場合、Debug Tool によってブロック名が順次方式で割り当てられます。 使用するプログラムが DWARF コンパイラー・オプションによってコンパイルされる場合、Debug Tool によってブロック名が非順次方式で割り当てられます。 このため、ブロック名は異なる可能性があります。 コンパイラー・オプションを切り替える場合は、コマンド・ファイル内で使用するコマンドのブロック名を確認してください。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
Debug Tool は、ユーザーのコマンドとそれにより生成された出力を セッション・ログ・ファイルに記録することができます。これにより、セッションを記録しておいて、その ファイルを参照してセッションの計画を分析することができます。また、ログ・ファイルを基本コマンド・ファイルとして指定して、後の セッションでコマンド入力ファイルとして使用することもできます。この方法は、デバッグ・セッションを再生したり、中断したセッションを再開したりする場合に利用すると便利です。
以下のものは、コメントとして (COBOL プログラムの場合、7 桁目のアスタリスク {*} に続いて、また、C、C++、PL/I、およびアセンブラーの各プログラムの場合は /* */ で囲んで) 表示されます。
Debug Tool セッション・ログ・ファイルに関連付けられたデフォルトの DD 名は、INSPLOG です。INSPLOG という DD 名のファイルを割り振らないと、デフォルトのログ・ファイル は作成されません。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
デバッグ・セッションの永続ログを作成するには、以下の仕様を持つファイルをまず作成します。
作成した後に、ユーザー・プログラムを実行するために使用する CLIST、JCL、または EXEC の DD 名 INSPLOG にこのファイルを割り振ってください。
COBOL の場合のみ、後でセッション・ログ・ファイルを コマンド・ファイルとして使用したい場合、RECFM FB および LRECL を 72 にします。 Debug Tool は、COBOL デバッグ・セッション中のファイル入力として は、72 桁目よりも後の部分はすべて無視します。
CICS の場合のみ、デフォルトは SET LOG OFF です。ログを開始するには、SET LOG ON file コマンドを使用しなければなりません。 例えば、ログが TSTPINE.DT.LOG というデータ・セットに書き込まれるようにするには、次のコマンドを出します。SET LOG ON FILE TSTPINE.DT.LOG;
SET LOG ON のデフォルトがまだ有効であることを確認してください。SET LOG OFF を出すと、ログ・ファイルへの出力は抑止されます。Debug Tool に制御が一度も渡されないと、ログ・ファイルは使用されません。
初期設定時にデフォルト・ログ・ファイル (INSPLOG) へのアクセスが行われると、同じ名前の既存ファイルがあればこれに上書きされます。MVS では、ログ・ファイルに MOD の後処理が割り振られている場合、ログ出力は既存のファイルに追加されます。SET LOG ON FILE xxx コマンドを入力しても、ログ出力は既存ファイルに追加されます。
ログ・ファイルをセッションに割り振らなかった場合、次のコマンドを入力し、SET LOG コマンドを使用して割り振ることができます。
SET LOG ON FILE logddn;
これにより、Debug Tool は DD 名 LOGDDN に割り振られたファイルにログを書き込むようになります。
セッション中の任意の時点で次のように入力して、情報がログ・ファイルに 送られないようにすることができます。
SET LOG OFF;
ログ・ファイルの使用を再開させるには、次のように入力します。
SET LOG ON;
ログ・ファイルは、Debug Tool セッションの全体にわたって活動状態に なっています。
Debug Tool は、以下の操作モード、すなわち行モード、フルスクリーン・モード、およびバッチ・モードで、ログ・ファイルを保持します。
ユーザー・コードの各行が実行された回数を記録するには、次のように します。
SET FREQUENCY ON;SET FREQUENCY ON コマンドを入力した後、ユーザーのソース・ウィンドウは現在の頻度カウントを示すように更新されます。このコマンドは、実際のカウントを表示するための統計値の収集を開始するので、ユーザー・アプリケーションがコードのセクションを既に実行していた場合、これらの実行されたステートメントのデータは利用できないことに注意してください。
プログラムの全体についてステートメントのカウントが欲しい場合は、次の命令を出してください。
GO ; LIST FREQUENCY * ;
これにより、各ステートメントの実行回数がリストされます。終了時に、結果がログ・ファイルに書き込まれます。LIST FREQUENCY * はいつでも出せますが、表示するのは、現在アクティブなコンパイル単位の頻度回数のみです。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
自動モニターをサポートしないコンパイル単位をデバッグする場合は、SET AUTOMONITOR コマンドを使用して、そのコンパイル単位で検出されるブレークポイントを記録することができます。SET AUTOMONITOR ON コマンドを入力すると、あたかも QUERY LOCATION を入力したときのように、検出された各ブレークポイントの場所を Debug Tool が記録します。
行のブレークポイントを設定または消去するには、ソース・ウィンドウ内の 実行可能行までカーソルを移動させて PF6 (AT/CLEAR) を 押します。DISABLE を使用して一時的にブレークポイントをオフにしたり、ENABLE を使用してオンに戻したりすることができます。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
以下のコマンドを使用すれば、未ロードのロード・モジュールまたは非アクティブなプログラムでソースを参照したり、ブレークポイントを設定したりすることができます。
SET QUALIFY CU load_spec ::> cu_spec ;
このコマンドで、ブレークポイントを設定したいロード・モジュールおよび CU の名前を指定します。 ロード・モジュールは必要に応じて暗黙的にロードされ、指定の CU に対して CU が作成されます。 指定の CU に対するソースが、ソース・ウィンドウに表示されます。 必要に応じて、ステートメント・ブレークポイントを設定できます。
GO や STEP などのコマンドによってプログラムの実行が再開されると、 暗黙的にロードされたモジュールは削除され、暗黙的に作成された CU にあるブレークポイントはすべて中断され、 暗黙的に作成された CU はすべて破棄されます。 通常のプログラム実行時に CU が後で作成されると、中断状態のブレークポイントは再活動化されます。
SET SAVE BPS 機能を使用してブレークポイントの保存および復元を行うと、 ブレークポイントはアクティブなエンクレーブ内にある最初のロード・モジュールの名前で保存および復元されます。 したがって、コマンド SET QUALIFY CU を使用して、別のエンクレーブの一部として実行されるプログラム内にブレークポイントを設定した場合、 このコマンドを使用して設定したブレークポイントは、別のエンクレーブでの実行時には復元されません。
Debug Tool が条件式を処理 (評価) し、いずれかのオペランドのデータが無効だった場合、その条件式は無効になります。この状態では、Debug Tool は停止し、ユーザーにコマンドの入力を促すプロンプトを出します。 プログラムの実行を続けるには、GO コマンドを入力する必要があります。 この状態で Debug Tool からプロンプトが出ないようにしたい場合は、SET WARNING OFF コマンドを入力します。
条件式は、以下の状態を含むいくつかの理由で、無効になる場合があります。
条件式の評価時に例外が発生した場合、Debug Tool は SET WARNING が OFF の場合でも停止し、例外に関するメッセージを表示し、コマンドの入力を求めるプロンプトを出します。
次の例では、複数の定義があるフィールドを条件式の一部として使用し、それぞれの定義に異なる属性がある場合に何が起きるかを説明しています。
AT CHANGE WK-TEST-NUM
BEGIN;
IF WK-TEST-NUM = 10;
LIST 'WK-TEST-NUM IS 10';
ELSE;
GO;
END-IF;
End;AT CHANGE WK-TEST-NUM
BEGIN;
SET WARNING OFF;
IF WK-TEST-NUM = 10;
LIST 'WK-TEST-NUM IS 10';
ELSE;
BEGIN;
SET WARNING ON;
GO;
END;
END-IF;
SET WARNING ON;
END;
これで、フィールド WK-TEST-NUM の値が 10 でないか数値型でない場合、Debug Tool は条件式 WK-TEST-NUM = 10 を false として評価し、GO コマンドを実行します。Debug Tool は停止せず、コマンドの入力を求めるプロンプトを出します。
この例では、条件式 (WK-TEST-NUM = 10) が評価される前に SET WARNING OFF コマンドを入力することにより、この条件式に関する警告メッセージの表示が抑止されました。 条件式が評価された後、SET WARNING ON コマンドを入力することにより、警告メッセージの表示は許可されました。
SET WARNING OFF コマンドを入力するときは、慎重に考慮してください。プログラム内のその他の問題を検出するのに役立つ警告メッセージの表示を抑止してしまう可能性もあるからです。
デフォルトにより、Debug Tool が始動した時点では、ユーザー・プログラムは まだ 1 つも (C++ コンストラクターおよび静的オブジェクトの 初期設定も含めて) 実行されていません。
Debug Tool は、1 つの行を画面上で 1 行として定義します。通常、これは行番号によって識別されます。 ステートメントは言語構造体であり、一連のアクションまたは宣言のセットにおけるステップを表しています。 1 つのステートメントが 1 行になることも、複数行になることもあります。また、複数のステートメントが 1 行で示されることもあります。 プログラムをステップスルーすると Debug Tool によって実行されるステートメントの数は、フックを配置する場所によって異なります。
次のフックまでプログラムを実行するには、PF2 (STEP) を 押します。以下の TEST または DEBUG コンパイラー・サブオプションのいずれかを組み合わせてプログラムをコンパイルした場合、STEP は 1 つのステートメントを実行します。
ブレークポイントに達するか、プログラムが終了するか、または条件が起こるまでユーザー・プログラムを実行するには、PF9 (GO) を押します。
コマンド STEP OVER は、呼び出された機能を実行しますが、その中をステップ実行しません。ステップオーバーするつもりであったのに、誤ってステップ処理で関数に入って しまった場合、STEP RETURN コマンドを出すと、戻り点 (呼び出し点の直後) にステップします。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
Debug Tool は、ユーザーがプログラムをデバッグする際に実行するステートメントを記録および再生することができる、コマンド (PLAYBACK コマンド) 一式を提供します。ステートメントを記録および再生するには、次のことを行ってください。
上記の各手順については、これ以降のセクションで詳細に説明します。
PLAYBACK ENABLE コマンドには、以下のパラメーターを指定します。
PLAYBACK ENABLE コマンドは、すべてのコンパイル単位または特定のコンパイル単位に対して実行するステートメントを記録するのに使用することができます。例えば、A、B、および C という既存のコンパイル単位に対して実行するステートメントを記録することができます。その後、PLAYBACK ENABLE コマンドを入力しすべてのコンパイル単位に対して実行するステートメントを記録するよう指定することができます。アスタリスク (*) を使用して、現在および将来のすべてのコンパイル単位を指定することができます。
Debug Tool が記録できるステートメントの数は、次のことに依存します。
記録をはじめた後で、ストレージの値を変更することはできません。指定するストレージの容量が大きいほど、Debug Tool は、より多くのステートメントを記録できます。Debug Tool が、使用可能なストレージをすべて使用してしまった場合、Debug Tool は、最新のステートメントの情報を最も古い情報に上書きします。DATA パラメーターが有効の場合、使用可能なストレージはもっと早く埋まっていきます。
TEST コンパイラー・オプションの SYM サブオプション を指定してコンパイルされたプログラムで DATA パラメーターを使用できるのは、 それらが以下のコンパイラーでコンパイルされる場合のみです。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
PLAYBACK START コマンドは、記録したステートメントをユーザーが再生したいということを Debug Tool に通知します。このコマンドは、通常のデバッグを中断させます。ブレークポイントが中断され、多くの Debug Tool コマンドが使用できなくなります。「Debug Tool リファレンスおよびメッセージ」には、ステートメントの再生中に使用できないコマンドの完全なリストが記載されています。
再生方向の初期設定は、逆方向です。
記録したステートメントを再生するには、STEP あるいは RUNTO コマンドを入力します。以下の条件のいずれかが満足されるまで、記録したステートメントを再生することができます。
順方向には、PLAYBACK START コマンドを入力した箇所まで再生することができます。ステートメントを再生する際、記録を希望したコンパイル単位に対して記録したステートメントだけを見ることができます。ステップを再生している間は、変数の変更はできません。DATA パラメーターが有効になっている場合、変数や式の内容にアクセスすることができます。
ステートメントの再生の方向を変更するには、PLAYBACK FOWARD コマンドまたは PLAYBACK BACKWARD コマンドを入力します。再生方向の初期設定は、逆方向です。
記録したステートメントの再生を停止して通常のデバッグを再開するには、PLAYBACK STOP コマンドを入力します。このコマンドは、PLAYBACK START コマンドを入力した箇所で通常のデバッグを再開します。Debug Tool は、ユーザーが実行するステートメントの記録を続けます。
実行するステートメントの記録とプログラムに関する追加情報の収集を停止するには、PLAYBACK DISABLE コマンドを入力します。このコマンドは、すべてのあるいは特定のコンパイル単位で実行するステートメントの記録を停止するのに使用します。1 つ以上のコンパイル単位の記録を停止する場合、そのようなコンパイル単位のデータは廃棄されます。すべてのコンパイル単位の記録を停止すると、PLAYBACK START コマンドは使用できなくなります。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
ステートメントの再生中は、変数やストレージの値を変更することはできません。
ステートメントを再生する際、多くの Debug Tool コマンドが使用できなくなります。「Debug Tool リファレンスおよびメッセージ」には、使用することのできないすべてのコマンドの完全なリストが記載されています。
DATA パラメーターが、それをサポートする COBOL コンパイル単位に対して指定されている、あるいはデフォルト設定されている場合、DATA DIVISION の次のセクションに定義されているデータにアクセスすることができます。
ADDRESS OF、LENGTH OF、および WHEN-COMPILED 以外の特殊レジスターにもアクセスすることができます。また、Debug Tool のコマンドがサポートするすべての特殊レジスターにもアクセスが可能です。
ステートメントを再生している場合、以下の条件が満たされれば、多くの Debug Tool のコマンドを使用することができます。
QUERY PLAYBACK コマンドを使用し、DATA オプションが有効になっているコンパイル単位を判別することができます。
「Debug Tool リファレンスおよびメッセージ」には、DATA パラメーターを指定したときに使用可能なすべてのコマンドの完全なリストが記載されています。
あるデバッグ・セッションで設定、ブレークポイント、およびモニター指定を保存してから、後続のデバッグ・セッションでそれらを復元できます。保存できるのは以下の情報です。
据え置き AT ENTRY ブレークポイントが検出されなかった場合、その保存も復元も行われません。
大部分の環境では Debug Tool は特定のデフォルト・データ・セット名を使用してこれらの項目を保存します。それによって、このツールがユーザーに代わってこれらの項目の保存と復元を自動的に行います。これらの環境では、各設定を自動的に復元する必要があります。それによって、SET RESTORE BPS AUTO と SET RESTORE MONITORS AUTO コマンドが Debug Tool 初期設定時に有効になります。一部の環境では RESTORE コマンドを使用してこれらの項目を手動で復元する必要があります。
TSO、CICS (ユーザー自身の ID を使用してログオン時)、および UNIX システム・サービスでは、以下のデフォルト・データ・セット名が使用されます。
非対話式モード (フルスクリーン・モード (VTAM 端末) を使用しない MVS バッチ・モード) では、INSPSAFE DD ステートメントを組み込みます。この DD ステートメントは、Debug Tool が各設定の保存と復元に必要となるデータ・セットです。また、INSPBPM DD ステートメントも組み込みます。この DD ステートメントは、Debug Tool がブレークポイント、モニター、および LDD 指定の保存と復元に使用する必要のあるデータ・セットです。
順次データ・セットを使用して、各設定の保存と復元を行います。PDS または PDSE を使用して、ブレークポイント、モニター、および LDD 指定の保存と復元を行います。 お勧めは PDSE の使用で、データ・セット圧縮を行う必要がないからです。Debug Tool は 独立したメンバーを使用して、各エンクレーブごとにブレークポイント、LDD データ、およびモニター指定を保存します。Debug Tool は、そのメンバー名をエンクレーブ内の初期ロード・モジュール名にします。保存されたすべてのブレークポイント、LDD データ、およびモニター指定をあるエンクレーブごとに破棄したい場合、対応するそのメンバーを削除すればよいのです。ただし、そのメンバーの内容を変更しないでください。
自動保存と復元を可能にするには、以下のステップを行う必要があります。
SET SAVE SETTINGS AUTO; SET RESTORE SETTINGS AUTO;
SET SAVE BPS AUTO; SET RESTORE BPS AUTO; SET SAVE MONITORS AUTO; SET RESTORE MONITORS AUTO;
ブレークポイントまたはモニター指定の自動復元を可能にしたい場合は、ステップ 4 (各設定の自動保存と復元を可能にする) を行う必要があります。
次回の Debug Tool 開始時にこの各設定が自動復元されます。同一プログラムをデバッグしている場合、ブレークポイントとモニター指定も自動復元されます。
Debug Tool では、これらのステップをユーザーに代わって行うサンプルのバッチ・ジョブ (hlq.SEQSAMP データ・セットの EQAWSVST メンバー) が提供されています。
ブレークポイントとモニターの自動保存を使用不可にするには、以下の設定を有効にする必要があります。
設定の自動保存を使用不可にするには、SET SAVE SETTINGS NOAUTO; 設定を有効にする必要があります。
ブレークポイントとモニターの自動復元を使用不可にするには、以下の設定を有効にする必要があります。
設定の自動復元を使用不可にするには、SET RESTORE SETTINGS NOAUTO; 設定を有効にする必要があります。
これらのどの値の自動保存を使用不可にする場合も、最後に保存されたデータは依然として適切なデータ・セットの中に存在しています。このため、これらのデータ・セットから復元することができます。注意すべきことは、そのデータが保存 された最終時点から値を復元するということです。このことは、Debug Tool を実行した最終時点から復元するということではありません。
以下の環境では自動復元はサポートされません。
以下のステップを実行して、ブレークポイント、モニター、および LDD 指定の保存と復元を行います。
SET SAVE SETTINGS AUTO FILE mysetdsn;
SET SAVE BPS AUTO FILE mybpdsn; SET SAVE MONITORS AUTO;
上記のいずれかの環境で次回の Debug Tool 開始時に、Debug Tool セッションの先頭で以下のコマンドをこの順序で使用する必要があります。
SET SAVE SETTINGS AUTO FILE mysetdsn; RESTORE SETTINGS; SET SAVE BPS AUTO FILE mybpdsn; RESTORE BPS MONITORS;
これらのコマンドをユーザーの優先ファイル (INSPPREF) に入れても構いません。
情報が保存または復元されるたびに、以下のアクションが実行される必要があります。
これらの各ステップはオペレーティング・システム・サービスを必要とするので、プロセス全体では、大量の経過時間が必要になる場合があります。
設定の保存と復元の場合、このプロセスは Debug Tool がアクティブにされるときに 1 回と、Debug Tool が終了するときに 1 回行われます。したがって、Debug Tool が繰り返しアクティブにされ、終了する場合を除き、このプロセスが過度に時間を消費することはありません。しかし、ブレークポイントかモニター、またはその両方の保存と復元の場合、このプロセスは各エンクレーブに入るときに 1 回と、各エンクレーブを終了するときに 1 回ずつ発生します。
プログラムが複数のエンクレーブから構成されているか、繰り返し実行される 1 つのエンクレーブで構成されている場合、このプロセスは何度も発生する可能性があります。その場合、パフォーマンスが気になるのであれば、ブレークポイントとモニターの保存と復元を使用不可にすることを考慮するとよいでしょう。プログラムが DTCN を伴う CICS の下で実行され、ブレークポイントとモニターの保存と復元が使用可能に設定されていない (SET SAVE BPS NOAUTO;、SET SAVE MONITORS NOAUTO;、SET RESTORE BPS NOAUTO;、および SET RESTORE MONITORS NOAUTO; が有効である) 場合、ブレークポイントは CICS 一時ストレージ・キューを使用して保存および復元されます。これは、標準的な方法より時間がかかりませんが、CICS の再始動をはさんでブレークポイントを保存できず、また、モニターの保存と復元にも対応していません。
Debug Tool では、以下の方法で変数の値を表示できます。
Debug Tool が、宣言されたデータ型で変数の値を表示できない場合は、宣言されたデータ型で表示できない文字を Debug Tool が処理する方法を参照してください。
開始する前に、情報が表示される形式を変更するかどうかを決めます。 領域および構成の変数の方が、画面上で表形式で配置される場合、より簡単に読み取れる場合があります。 形式に変更を加えるには、以下のオプションのいずれかを実行します。
変数の内容を 1 回表示するには、以下のオプションのいずれかを実行します。
rightSide = (leftSide * leftSide) + (bottomSide * bottomSide);
モニター・ウィンドウに変数を追加すると、その変数の値を モニター することになります。モニター・ウィンドウに変数を追加するには、以下のオプションのいずれかを実行します。
MONITOR LIST variable-name;
Debug Tool は、制御を受け取るたびに、または表示に影響を及ぼす Debug Tool コマンドが入力されるたびに、モニター・ウィンドウの variable-name の値を更新します。これにより、モニター・ウィンドウには常に現行値が表示されます。
rightSide = (leftSide * leftSide) + (bottomSide * bottomSide);
Debug Tool は、制御を受け取るたびに、または表示に影響を及ぼす Debug Tool コマンドが入力されるたびに、モニター・ウィンドウの leftSide の値を更新します。これにより、モニター・ウィンドウには常に現行値が表示されます。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
コマンド SET MONITOR DATATYPE ON は、モニター・ウィンドウに表示される変数のデータ型を表示します。これには、自動モニター・セクションの変数も含まれます。通常、このデータ型はその変数の宣言で使用されたデータ型です。コマンド SET MONITOR DATATYPE OFF は、この情報の表示を使用不可にします。
変数の値とデータ型をモニター・ウィンドウに表示するには、以下のステップを実行します。
SET MONITOR DATATYPE ON;
MONITOR LIST variable-name;
variable-name は、実際の変数名に置き換えてください。Debug Tool は、その変数をモニター・ウィンドウに追加し、その変数の現行値とデータ型を表示します。
SET AUTOMONITOR ON;
Debug Tool は現行ステートメント内の変数 (単数または複数) をモニター・ウィンドウの自動モニター・セクションに追加し、それらの変数の現行値とデータ型を表示します。
SET AUTOMONITOR ON LOG;
Debug Tool は変数 (単数または複数) をモニター・ウィンドウの自動モニター・セクションに追加し、それらの変数の現行値とデータ型を表示し、その情報をログに保存します。
モニター・ウィンドウに変数を追加すると、Debug Tool は、その変数に 1 から 99 までの参照番号を割り当てます。これらの参照番号を使用して、モニター・ウィンドウ内の変数を別の変数に置き換えることができます。
モニター・ウィンドウ内の変数を別の変数に置き換えるには、以下のステップを実行します。
MONITOR reference_number LIST variable-name;
指定できる参照番号は、既存の参照番号か、または既存の最大の参照番号より 1 だけ大きい番号のみです。
プログラムをステップスルーしていくと、各ステートメントを実行するときに、各ステートメントの変数をモニターする必要が生じることがあります。 各ステートメントを実行する前に、モニター・ウィンドウに変数を手動で追加する方法は (モニター・ウィンドウへの変数の追加を参照)、時間がかかる場合があります。 Debug Tool を使用すると、各ステートメントを実行する前後に、ステートメントに変数を自動で追加することができます。また、ステートメントを実行する前後に、これらの変数の値を表示し、ステートメントを実行した後に、モニター・ウィンドウから変数を除去することができます。 これを行うには、SET AUTOMONITOR ON コマンドを使用します。
開始する前に、Debug Tool が変数を自動的にモニター・ウィンドウに追加する方法を確認して、SET AUTOMONITOR コマンドがどのように作用するのかを理解しておいてください。
変数をモニター・ウィンドウに自動的に追加するには、以下のステップを実行します。
プログラムをステップスルーしていくと、Debug Tool によって、ウィンドウの自動モニター・セクションに、変数の名前と値が表示されます。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
次の情報をログ・ファイルに保存するには、SET AUTOMONITOR ON LOG コマンドを入力します。
デフォルト・オプションは NOLOG で、上の情報を保存しません。
ログ・ファイルの各エントリーが、プログラム内でのブレークポイントの場所と、ステートメントの変数の名前と値を含みます。このような情報をログ・ファイルに保存するのをやめ、モニター・ウィンドウの自動モニターのセクションの更新を継続するには、SET AUTOMONITOR ON NOLOG コマンドを入力します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
SET AUTOMONITOR ON コマンドを入力すると、Debug Tool によって、以下の例のように、モニター・ウィンドウ内のモニター対象変数のリストの下部に ********** AUTOMONITOR ********** という行が表示されます。
COBOL LOCATION: DTAM01 :> 109.1
Command ===> Scroll ===> PAGE
MONITOR -+----1----+----2----+----3----+----4----+----5----+----6- LINE: 1 OF 7
******************************** TOP OF MONITOR *******************************
----+----1----+----2----+----3----+----4----+
0001 1 NUM1 0000000005
0002 2 NUM4 '1111'
0003 3 WK-LONG-FIELD-2 '123456790 223456790 323456790 423456790 523
0004 456790 623456790 723456790 823456790 9234567
0005 90 023456790 123456790 223456790 323456790 4
0006 23456790 523456790 623456790 723456790 82345
0007 ********** AUTOMONITOR **********
この行より下の領域は、自動モニター・セクションと呼ばれます。STEP コマンドを入力するたびに、またはブレークポイントが検出されるたびに、Debug Tool は以下のタスクを実行します。
この動作によって、Debug Tool がステートメントを実行する前に、変数の値が表示されます。 Debug Tool がステートメントを実行した後に変数の値を表示する場合は、SET AUTOMONITOR ON PREVIOUS コマンドを入力します。Debug Tool によって、モニター・ウィンドウ内にあるモニター対象変数のリストの下部に ********** AUTOMONITOR - PREVIOUS load-name ::> cu-name :> statement-id ********** という行が表示されます。 STEP コマンドを入力するたびに、またはブレークポイントが検出されるたびに、Debug Tool は以下のタスクを実行します。
Debug Tool がステートメントを実行する前後に変数の値を表示する場合は、SET AUTOMONITOR ON BOTH コマンドを入力します。Debug Tool によって、モニター・ウィンドウ内にあるモニター対象変数のリストの下部に ********** AUTOMONITOR load-name ::> cu-name :> statement-id ********** という行が表示されます。 Debug Tool によって、この行の下に、Debug Tool が次に実行するステートメントの変数の名前と値が表示されます。次に、Debug Tool によって、***** Previous Statement load-name ::> cu-name :> statement-id ***** という行が表示されます。 Debug Tool によって、この行の下に、Debug Tool が今実行したステートメントの変数の名前と値が表示されます。STEP コマンドを入力するたびに、またはブレークポイントが検出されるたびに、Debug Tool は以下のタスクを実行します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
このセクションの例は、次の 2 行の COBOL コードが実行されることを想定します。
COMPUTE LOAN-AMOUNT = FUNCTION NUMVAL(LOAN-AMOUNT-IN). 1
COMPUTE INTEREST-RATE = FUNCTION NUMVAL(INTEREST-RATE-IN).
行 1 のステートメントを実行する前に、次のコマンドを入力します。
SET AUTOMONITOR ON ;
変数 LOAN-AMOUNT および LOAN-AMOUNT-IN の名前と値が、モニター・ウィンドウの自動モニターのセクションに表示されます。これらの値は、ステートメントを実行する前の変数の値です。
STEP コマンドを入力します。Debug Tool が、LOAN-AMOUNT および LOAN-AMOUNT-IN をモニター・ウィンドウの自動モニターのセクションから削除します。そして、変数 INTEREST-RATE と INTEREST-RATE-IN の名前と値を表示します。これらの値は、ステートメントを実行する前の変数の値です。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
モニター・ウィンドウで、Debug Tool は以下のいずれかの文字を使用して、宣言されたデータ型で表示できない文字を示します。
宣言されたデータ型で表示できない文字は、コード・ページごとに異なる場合があります。しかし、一般的に言って、それらの文字は画面に表示可能な対応する記号を持たない文字です。
それらの文字を変更できるようにするために、HEX および DEF 接頭部コマンドを使用して、どの文字を変更しようとしているかを確認できます。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
宣言されたデータ型で表示できない文字を Debug Tool が処理する方法で説明したように、宣言されたデータ型で表示できない文字を変更し、結果が予期したとおりであることを確認したい場合は、以下のステップを実行します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
変数の値を縦欄の形式でモニターするには、SET MONITOR COLUMN ON コマンドを入力します。モニター・ウィンドウに表示される変数名は同じ桁に位置合わせされ、値も同じ桁に位置合わせされます。Debug Tool は、モニター・ウィンドウのヘッダー行の下に、モニター値域の目盛りが表示されます。
モニター対象の変数の値をモニター・ウィンドウ内で折り返し表示するには、SET MONITOR WRAP ON コマンドを入力します。 モニター対象の変数の値をスクロール可能行に表示するには、SET MONITOR COLUMN ON コマンドを入力した後に、SET MONITOR WRAP OFF コマンドを入力します。
変数の値を 16 進形式で表示するには、LIST %HEX コマンドを 入力するか、LIST %HEX コマンドで PF キーを定義します。PL/I プログラムの場合、変数の値を 16 進形式で 表示するには、PL/I 組み込み関数 HEX を使用します。PL/I HEX 組み込み関数について詳しくは、 「Enterprise PL/I for z/OS: プログラミング・ガイド」を参照してください。 PL/I 変数を 16 進形式で表示する場合、モニター・ウィンドウ上で既存の値に 上書きして変数の値を編集することはできません。
16 進形式で変数の値を表示するには、variable-name を変数の名前で 置き換えて以下のいずれかのコマンドを入力します。
Debug Tool は、変数 variable-name の値を 16 進形式で表示します。
LIST %HEX コマンドで PF キーを定義した場合、以下のステップを行います。
PL/I HEX 組み込み関数で PF キーを定義することはできません。
変数の値は、変数の宣言されたデータ型または 16 進形式でモニターすることができます。 宣言されたデータ型で変数の値をモニターするには、モニター・ウィンドウへの変数の追加で説明された手順に従います。 PL/I HEX 組み込み関数を使用して、PL/I 変数を 16 進形式でモニターする場合、モニター・ウィンドウの既存の値に上書きして変数の値を編集することはできません。PL/I HEX 組み込み関数を使用する代わりに、ここで説明するコマンドを使用してください。
変数または式の値を 16 進形式でモニターするには、 以下のいずれかの手順を行います。
MONITOR n HEX ;
n には、16 進形式で表示したいモニター対象の式に対応する、モニター・リスト内の番号を指定します。
MONITOR LIST (expression) HEX ;
expression には、モニターしたい変数の名前または複合式を指定します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
以下のいずれかのコマンドを使用して、変数またはストレージの値を変更することができます。
各コマンドは「Debug Tool リファレンスおよびメッセージ」で説明されています。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
モニター・ウィンドウ上で既存の値に上書きすることにより変数の値を変更するには、 以下のステップを行います。
Debug Tool は変数またはストレージを変更します。 変数またはストレージを変更するために Debug Tool が生成したコマンドは、ログ・ファイル内に保管されます。
モニター・ウィンドウ上で既存の値に上書きすることにより変数の値を変更する際には、 以下の制約があります。
モニター値域に引用符 (") またはアポストロフィ (') を入力する場合は、該当する引用符規則に準拠していることをよく確認してください。
SET AUTOMONITOR ON コマンドを入力する前にモニター・ウィンドウが閉じられた場合、Debug Tool は、モニター・ウィンドウを開き、実行されるステートメントの変数の名前と値をウィンドウの自動モニター・セクションに表示します。
SET AUTOMONITOR OFF コマンドを入力する前にモニター・ウィンドウが開いており、SET AUTOMONITOR ON がモニターしていない変数の値を監視している場合、モニター・ウィンドウは開いたままになります。
Debug Tool は、メモリー・ウィンドウを通じてメモリーのセクションを表示できます。次のいずれかのオプションを実行することにより、メモリー・ウィンドウを開き、そこにメモリーの特定のセクションを表示できます。
メモリー・ウィンドウが物理ウィンドウを通じて表示されていない場合は、あとでメモリー・ウィンドウが物理ウィンドウを通じて表示されるときに使用するために、基底アドレスが保存されます。
物理ウィンドウを通じてメモリー・ウィンドウを表示するには、WINDOW SWAP MEMORY LOG コマンドまたは PANEL LAYOUT コマンドを使用します。
物理ウィンドウを通じてメモリー・ウィンドウを表示するには、WINDOW SWAP MEMORY LOG コマンドまたは PANEL LAYOUT コマンドを使用します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
16 進データ域に 16 進文字 (0 から 9、A から F、a から f) を上書きできます。 Debug Tool は、ユーザーが入力した値でメモリーを更新します。メモリーのプログラム命令域を変更した場合、Debug Tool は STEP コマンドをどれも実行しないか、メモリーが変更された領域の近くにある AT ブレークポイントで停止しません。さらに、ユーザーがプログラムの実行を試みた場合、結果は予測不能になります。
文字データ列はデータの文字表現であり、表示の目的にのみ存在する領域です。
DESCRIBE ALLOCATIONS、ALLOCATE、および FREE コマンドを使用してデバッグを行っている間に、ファイルの管理をすることができます。CICS プログラムのデバッグ中にファイルを管理することはできません。
現在割り振られているファイルのリストを見るには、DESCRIBE ALLOCATIONS コマンドを入力します。以下の画面は、コマンドと出力の例を示しています。
DESCRIBE ALLOCATIONS ; * Current allocations: * VOLUME CAT DISP OPEN DDNAME DSNAME * 1 --- 2 - 3 ------ 4 - 5 ----- 6 ------------------------------------------ * COD008 * SHR KEEP * EQAZSTEP BCARTER.TEST.LOAD * SMS004 * SHR KEEP SHARE.CEE210.SCEERUN * COD00B * OLD KEEP * INSPLOG BCARTER.DTOOL.LOGV * VIO NEW DELETE ISPCTL0 SYS02190.T085429.RA000.BCARTER.R0100269 * COD016 * SHR KEEP ISPEXEC BCARTER.MVS.EXEC * IPLB13 * SHR KEEP ISPF.SISPEXEC.VB * VIO NEW DELETE ISPLST1 SYS02190.T085429.RA000.BCARTER.R0100274 * IPLB13 * SHR KEEP * ISPMLIB ISPF.SISPMENU * SMS278 * SHR KEEP SHARE.ANALYZ21.SIDIMLIB * SHR89A * SHR KEEP SHARE.ISPMLIB * SMS25F * SHR KEEP * ISPPLIB SHARE.PROD.ISPPLIB * SMS891 * SHR KEEP SHARE.ISPPLIB * SMS25F * SHR KEEP SHARE.ANALYZ21.SIDIPLIB * IPLB13 * SHR KEEP ISPF.SISPPENU * IPLB13 * SHR KEEP SDSF.SISFPLIB * IPLB13 * SHR KEEP SYS1.SBPXPENU * COD002 * OLD KEEP * ISPPROF BCARTER.ISPPROF * NEW DELETE SYSIN TERMINAL * NEW DELETE SYSOUT TERMINAL * NEW DELETE SYSPRINT TERMINAL
以下のリストは、画面の各列の説明です。
ALLOCATE コマンドを使用して、既存のカタログ式データ・セットにファイルを割り振ることができます。
FREE コマンドを使用して、割り振られたファイルを解放することができます。
デフォルトでは、DESCRIBE ALLOCATIONS コマンドは現在のユーザーにより割り振られたファイルをリストします。他のパラメーターを指定して、LINK リスト、LPA リスト、APF リスト、システム・カタログ、Parmlib、および Proclib に現在割り振られているデータ・セットなど、他のシステム割り振りをリストすることができます。「Debug Tool リファレンスおよびメッセージ」は、これらの情報をリストするために指定しなければならないパラメーターについて説明しています。
ログ・ウィンドウにエラー・メッセージが表示されるときにメッセージ ID 番号が表示されない場合は、次のようにメッセージ ID 番号を表示することができます。
EQA1807E The command element d is ambiguous.
ユーザーのプロファイルを変更するか、SET MSGID ON コマンドを使用してください。ユーザー・プロファイルを変更するには、PANEL PROFILE コマンドを使用し、Show message ID numbers を YES に設定 (NO に上書き) してください。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
ここでは、どのコンパイル単位が Debug Tool に認識されるかを知りたい場合に、どうすればよいかを説明します。これは、コンパイル単位の名前を忘れた場合や、ソース・ファイル、リスト・ファイル、または分離デバッグ・ファイルが、プログラムのコンパイル後に移動または名前変更された場合に役立ちます。Debug Tool は、既知のコンパイル単位に関連したソース・ファイル、リスト・ファイル、または分離デバッグ・ファイルのみを表示できます。
どのコンパイル単位を Debug Tool が認識できるかを判別するには、以下のいずれかのオプションを実行します。
LIST NAMES CUS コマンドの実行後、Debug Tool はコンパイル単位のリストをログ・ウィンドウに表示します。このリストを使用して SET QUALIFY CU コマンドを構成でき、そのためには、コンパイル単位の名前の上に「SET QUALIFY CU」というワードを入力します。次に、Enter を押します。Debug Tool は、ユーザーが入力したワードから構成されたコマンドと、コンパイル単位の名前を表示します。再び Enter を押して、コマンドを実行します。
例えば、LIST NAMES CUS コマンドを入力した後、Debug Tool はログ・ウィンドウに以下の行を表示します。
USERID.MFISTART.C(CALC) USERID.MFISTART.C(PUSHPOP) USERID.MFISTART.C(READTOKN)
最後の行の上に SET QUALIFY CU と入力し、Enter を押すと、Debug Tool はコマンド行の中に次のコマンドを構成します。SET QUALIFY CU "USERID.MFISTART.C(READTOKN)"。Enter を押すと、Debug Tool はこのコマンドを実行します。
この方法はキー・ストロークが少なくて済み、長いコマンドでエラーが少なくなります。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
対話式 Debug Tool セッション中に、必要に応じてアテンション割り込みの要求ができます。例えば、無限ループのように見える場合に停止したり、端末に大量の出力が表示されるのを停止したり、STEP コマンドの実行を停止したりできます。
アテンション割り込みと ATTENTION 条件とを混同しないでください。AT OCCURRENCE または ON ATTENTION を設定してある場合、そのブレークポイントに関連付けられたコマンドはアテンション割り込みでは実行されません。
ホストのオペレーティング・システムにより認識されたアテンション割り込みについても言語環境プログラムが認識できるようにするには、言語環境プログラムのランタイム・オプション TRAP と INTERRUPT を両方とも ON に設定しておく必要があります。TEST ランタイム・オプションの test_level サブオプションは、NONE に設定しない でください。
アテンション割り込みキーは、以下の環境およびデバッグ・モードではサポートされません。
MVS の場合のみ: C の場合は、アテンション割り込みを使用するときに、SET INTERCEPT ON FILE stdout を使用して、端末へ送られるメッセージを代行受信します。アテンション割り込みの後はメッセージが端末に届かなくなるので、この処置が必要です。
動的デバッグ機能の場合のみ: この動的デバッグ機能は、コンパイル時に挿入されるフックがあるプログラムに対してのみ、アテンション割り込みキーをサポートします。
該当するキーは、必ずしもすべてのキーボードで ATTN と印が付いている わけではありません。以下のキーがよく使われます。
アテンション割り込み を要求すると、Debug Tool に制御が渡されます。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
ユーザー・プログラムのデバッグを終了したら、以下のいずれかの方法でフルスクリーン・デバッグ・セッションを終了します。
CICS 非言語環境プログラムのアセンブラー・プログラムまたは非言語環境プログラムの COBOL プログラムをデバッグしている場合、QUIT は、Debug Tool を終了させ、ABEND 4038 でタスクを終了させます。
CICS 非言語環境プログラムのアセンブラー・プログラムまたは非言語環境プログラムの COBOL プログラムをデバッグしている場合、QUIT は、Debug Tool を終了させ、ABEND 4038 でタスクを終了させます。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。