デバッグ開始 (STRDBG)
| 実行可能場所: すべての環境 (*ALL) スレッド・セーフ: いいえ |
パラメーター 例 エラー・メッセージ |
デバッグ開始(STRDBG)コマンドは,ジョブをデバッグ・モードにし,任意指定で最大20のプログラムと20のサービス・プログラムおよび20のクラス・ファイルをデバッグ・モードに追加します。また,デバッグ・セッションの一定の属性を指定します。たとえば,デバッグ・モード中にプロダクション・ライブラリー中のデータベース・ファイルを更新できるかどうかを指定することができます。
STRDBGコマンドがグラフィカル・デバッグに登録されたユーザーによって出された場合には,従来のシステム・デバッガーの代わりにグラフィカル・システム・デバッガーが立ち上げられます。
デバッグは3つの環境で同時に操作することができます。3つの環境とはOPM(オリジナル・プログラム・モデル),ILE(統合言語環境),およびJAVAです。このコマンドの一部のパラメーターは3つの環境すべてに適用可能です。このコマンドの一部のパラメーターはOPM, ILE,またはJAVAだけに適用可能です。各パラメーター記述には,パラメーターが適用可能な環境を指定するステートメントがあります。
デバッグ変更(CHGDBG)コマンドをジョブの中で後から使用して,デバッグ・モードの属性を変更することができます。また,OPMプログラムがプログラム追加(ADDPGM )コマンドまたはプログラム除去(RMVPGM)コマンドで指定された場合には,デバッグ・セッションへの追加またはデバッグ・セッションからの除去を行うことができます。ADDPGMプログラムによって追加されたOPMプログラムはOPMデバッグ環境に入ります。
あるジョブが別のジョブをサービス中であり,STRDBGが入力された時には,サービス中のジョブに対してすべてのデバッグ・コマンドが有効です。そのジョブがジョブ待ち行列で保留中の場合には,ジョブが実行可能となるまでそれ以上のデバッグ・コマンドを入力することはできません。ジョブの開始時に,初期停止点画面が表示されます。この画面で,追加のデバッグ・コマンドを入力することができます。別のジョブにサービスするためには,STRSRVJOB(サービス・ジョブ開始)コマンドを参照してください。別のジョブからのジョブのデバッグに関する詳細は,IBM i Information Center(http://www.ibm.com/systems/i/infocenter/)の「プログラミング」カテゴリーの「制御言語(CL)」トピック・コレクション にあります。
制約事項:
- デバッグ・モードでこのコマンドを使用することはできません。デバッグ・モードを終了するためには,デバッグ終了(ENDDBG)コマンドを参照してください。
- 別のジョブをサービス中で,そのジョブが保留,延期,または終了中の場合には,このコマンドを使用することはできません。
- このコマンドは共通の*EXCLUDE権限付きで出荷され,QPGMR, QSRV,およびQSRVBASユーザー・プロファイルはこのコマンドを使用する専用権限を持っています。
- プログラムに対する*CHANGE権限,またはプログラムに対する*USE権限および*SERVICE特殊権限が必要です。
| 上 |
パラメーター
| キーワード | 記述 | 選択項目 | ノーツ |
|---|---|---|---|
| PGM | プログラム | 単一値: *NONE その他の値 (最大 20 回の繰り返し): 修飾オブジェクト名 |
オプショナル, 定位置 1 |
| 修飾子 1: プログラム | 名前 | ||
| 修飾子 2: ライブラリー | 名前, *LIBL, *CURLIB | ||
| DFTPGM | 省略時のプログラム | 名前, *PGM, *NONE | オプショナル |
| MAXTRC | 最大トレース・ステートメント数 | 整数, 200 | オプショナル |
| TRCFULL | トレース・データ満杯時の処理 | *STOPTRC, *WRAP | オプショナル |
| UPDPROD | 実動ファイルの更新 | *NO, *YES | オプショナル |
| OPMSRC | OPMソース・レベル・デバッグ | *NO, *YES | オプショナル |
| SRVPGM | サービス・プログラム | 単一値: *NONE その他の値 (最大 20 回の繰り返し): 修飾オブジェクト名 |
オプショナル |
| 修飾子 1: サービス・プログラム | 名前 | ||
| 修飾子 2: ライブラリー | 名前, *LIBL, *CURLIB | ||
| CLASS | クラス・ファイル | 値 (最大 20 回の繰り返し): パス名, *NONE | オプショナル |
| DSPMODSRC | モジュール・ソースの表示 | *PGMDEP, *NO, *YES | オプショナル |
| SRCDBGPGM | ソース・デバッグ・プログラム | 単一値: *SYSDFT その他の値: 修飾オブジェクト名 |
オプショナル |
| 修飾子 1: ソース・デバッグ・プログラム | 名前 | ||
| 修飾子 2: ライブラリー | 名前, *LIBL, *CURLIB | ||
| UNMONPGM | 監視されないメッセージ・プログラム | 単一値: *NONE その他の値: 修飾オブジェクト名 |
オプショナル |
| 修飾子 1: 監視されないメッセージ・プログラム | 名前 | ||
| 修飾子 2: ライブラリー | 名前, *LIBL, *CURLIB | ||
| DBGENCKEY | 暗号化解除鍵 | 文字値, *NONE | オプショナル |
| 上 |
プログラム (PGM)
ジョブでデバッグするために,最大20個のプログラムを指定します。プログラムをデバッグする前に,その名前をプログラム追加(ADDPGM)コマンドまたはモジュール・ソース表示(DSPMODSRC)コマンドでこのパラメーターに指定しなければなりません。
このパラメーターはOPM環境およびILE環境の両方で適用可能です。
単一値
- *NONE
- プログラム名はデバッグ・セッションの開始時に指定しません。プログラム追加(ADDPGM)コマンドまたはモジュール・ソース表示(DSPMODSRC)コマンドは,後からプログラムを追加するために使用することができます。
その他の値(最大20個指定可能)
修飾子1: プログラム
- 名前
- デバッグするプログラムの名前を指定してください。OPMデバッグ環境では,同じ名前を持つプログラムを同時にデバッグすることはできません。ILEデバッグ環境では,同じ名前を持つ2つのプログラムが別のライブラリーに入っている場合は,それらをデバッグすることができます。
修飾子2: ライブラリー
- *LIBL
- 最初に一致するものが見つかるまで,現行スレッドのライブラリー・リスト内のすべてのライブラリーが検索されます。
- *CURLIB
- プログラムを見つけるために,ジョブの現行ライブラリーが使用されます。ジョブの現行ライブラリーとして指定されているライブラリーがない場合は,QGPLが使用されます。
- 名前
- プログラムが入っているライブラリーを指定してください。
| 上 |
省略時のプログラム (DFTPGM)
デバッグ・モードの時に省略時のプログラムとして使用するオリジナル・プログラム・モデル(OPM)プログラムを指定します。ここで指定したプログラムは,ユーザーがプログラム (PGM)パラメーターに*DFTPGMの値を指定した他のすべてのデバッグ・プログラムの省略時のプログラムとして使用されます。すなわち,省略時のプログラムが前に指定された場合には,このパラメーターはそれを変更することができます。
このパラメーターが適用可能なのはOPM環境だけです。
- *PGM
- このコマンドのPGMパラメーターに名前を指定したプログラムが,ジョブのデバッグ・セッションの省略時のプログラムとなります。PGMパラメーターに指定されたプログラム名が複数ある場合には,OPMデバッグ環境に追加されたリスト中に名前が指定された最初のOPMプログラムが省略時のプログラムになります。*NONEがPGMパラメーターに指定されるか,またはそれが省略時の値である場合には,この値(*PGM)が指定された時も*NONEと見なされます。
- *NONE
- 省略時のプログラムは指定されません。前に省略時のプログラムとして指定されているプログラムがあったとしても,そのプログラムは省略時のプログラムではなくなります。省略時のプログラムのないジョブでは,その他のデバッグ・コマンドのPGMパラメーターに*DFTPGMを指定することはできません。
- 名前
- デバッグ・モード中に省略時のプログラムとして使用するプログラムの名前を指定してください。このコマンドのPGMパラメーターにも,同じ名前を(修飾された形式で)指定しなければなりません。このパラメーターでバインド済みプログラムを指定することはできません。
注: OPMSRC(*YES)が指定された場合には,OPMプログラムは,OPMデバッグ環境またはILEデバッグ環境のいずれか一方に追加することができます。ILEデバッグ環境に追加した場合には,OPMデバッグ環境の省略時のプログラムとすることはできません。
| 上 |
最大トレース・ステートメント数 (MAXTRC)
システムが,トレースを終了するかまたはトレース・ファイルで折り返し(オーバーレイ)を行う前に,ジョブのトレース・ファイルに入れるトレース・ステートメントの最大数を指定します。トレース・ファイルにこの指定された最大数が含まれていると,システムは,トレース・データ満杯時の処理 (TRCFULL)パラメーターに与えられた値によって指定された処置を行います。
注: 対話式環境でデバッグするプログラムについては,トレース・ステートメントの最大数を1に設定し,TRCFULLパラメーターの値を*STOPTRCとすることにより,命令のステップ実行を行うことができます。
このパラメーターが適用可能なのはOPM環境だけです。
- 200
- トレースが停止するか,折り返しが起こる前に,200個のトレース・ステートメントをファイルに入れることができます。
- 整数
- トレース・ファイルに入れることのできるトレース・ステートメントの最大数を指定してください。
| 上 |
トレース・データ満杯時の処理 (TRCFULL)
ジョブのトレース・ファイルがいっぱいになった時(すなわち,最大トレース・ステートメント数 (MAXTRC)パラメーターに指定された最大数のトレース・ステートメントが含まれる時)に,どのような処置を行うかを指定します。
このパラメーターが適用可能なのはOPM環境だけです。
- *STOPTRC
- バッチ環境では,トレースは停止されますが,プログラムの処理は続行されます。また,対話式環境では,停止点が生じた時点でユーザーに制御権が渡されます。ユーザーが処理を続行した場合には,トレース対象のステートメントの範囲内で,以後の各ステートメントの処理の前にそれぞれ停止点が生じ,トレース・ファイルは新しい項目を入れるために拡張されます。
- *WRAP
- トレース・ファイルは,新しいトレース・ステートメントが発生するたびに,ファイルの先頭から折り返してオーバーレイされます。プログラムは,折り返しが起こったことを示すメッセージを出さずに,処理を完了します。トレース・ファイルには指定された最大ステートメント数を超えるステートメントが入ることはなく,また,常に,記録された最新のステートメントが入っていることになります。
| 上 |
実動ファイルの更新 (UPDPROD)
ジョブがデバッグ・モードになっている時に,プロダクション・ライブラリー中のデータベース・ファイルをレコードの更新または新しいレコードの追加のためにオープンできるかどうかを指定します。できない場合には,ファイルを使用するプログラムの実行を試みる前にファイルをテスト・ライブラリーにコピーしなければなりません。
このパラメーターはOPM環境およびILE環境の両方で適用可能です。
- *NO
- ジョブがデバッグ・モードになっている時には,プロダクション・ライブラリー中のデータベース・ファイルを更新することはできません。データベース・ファイルは読み取りのためにだけオープンすることができます。これにより,プログラムがデバッグされている時に,データベース・ファイルが不要な更新から保護されます。これに対する例外は,プロダクション・ライブラリーがすでにオープンされた後で,デバッグ・モードを開始する場合です。この値を指定した場合には,一部のコマンド(これには,機能キー,メニュー・オプション,またはプルダウンも含めることができます)は適切に働かないことがあります。
- *YES
- ジョブがデバッグ・モードになっている時には,プロダクション・ライブラリー中のデータベース・ファイルを更新することはできます。
| 上 |
OPMソース・レベル・デバッグ (OPMSRC)
オリジナル・プログラム・モデル(OPM)プログラムがシステム・ソース・デバッグ・サポート (ILEソース・デバッグと同じ)を使用してデバッグされることを指定します。
このパラメーターは,OPTION(*SRCDBG)を指定したCRTCLPGM, CRTRPGPGM,およびCRTCBLPGMコマンドを使用して作成したOPM CL, OPM RPG,およびOPM COBOLプログラムの場合に有効です。さらに,このパラメーターはOPTION(*LSTDBG)を指定したCRTCLPGM, CRTRPGPGM, CRTCBLPGM, CRTSQLRPG, CRTSQLCBL,およびCRTRPTRPGコマンドによって作成されたOPM CL, OPM RPG,およびOPM COBOLプログラムの場合にも有効です。OPMプログラムがCL, RPG,またはCOBOLではなく,有効なデバッグ・オプションを指定してコンパイルしなかった場合には,このパラメーターは無視されます。
このパラメーターはOPM環境およびILE環境の両方で適用可能です。
現在では,ILE機能はOPMプログラムで操作されます。たとえば,ソース・レベル・デバッグなど。
- *NO
- OPMデバッグ機能はOPMプログラム用に使用されます。
- *YES
- ILEデバッグ機能はOPMプログラム用に使用されます。
| 上 |
サービス・プログラム (SRVPGM)
ジョブでデバッグするために,最大20個のサービス・プログラムを指定します。サービス・プログラムをデバッグする前に,その名前をこのパラメーターまたはモジュール・ソース表示(DSPMODSRC)コマンドで指定しなければなりません。
このパラメーターはILE環境で適用されるだけです。
単一値
- *NONE
- デバッグ・セッションの開始時にサービス・プログラム名は指定されません。後でモジュール・ソース表示(DSPMODSRC)コマンドを使用してサービス・プログラムを追加することができます。
その他の値(最大20個指定可能)
修飾子1: サービス・プログラム
- 名前
- デバッグするサービス・プログラムの名前を指定してください。
修飾子2: ライブラリー
- *LIBL
- 最初に一致するものが見つかるまで,現行スレッドのライブラリー・リスト内のすべてのライブラリーが検索されます。
- *CURLIB
- サービス・プログラムを見つけるためにジョブの現行ライブラリーが使用されます。ジョブの現行ライブラリーとして指定されているライブラリーがない場合は,QGPLが使用されます。
- 名前
- サービス・プログラムが入っているライブラリーを指定してください。
| 上 |
クラス・ファイル (CLASS)
ジョブでデバッグするために,最大20個のクラス・ファイルを指定します。クラス・ファイルをデバッグする前に,その名前をこのパラメーターまたはモジュール・ソース表示(DSPMODSRC)コマンドで指定しなければなりません。
このパラメーターはILE環境で適用されるだけです。
- *NONE
- デバッグ・セッションの開始時にクラス・ファイルは指定されません。後でモジュール・ソース表示(DSPMODSRC)コマンドを使用してクラス・ファイルを追加することができます。
- パス名
- デバッグするクラス・ファイルのパス名を指定してください。
| 上 |
モジュール・ソースの表示 (DSPMODSRC)
このコマンドが処理されて,エラーが起こらなかった時に,ソース・デバッグ・プログラムの最初の画面が表示されるかどうかを指定します。
このパラメーターはILE環境で適用されるだけです。
- *PGMDEP
- ソース・デバッグ・プログラム画面の表示は,プログラム (PGM)パラメーターに指定されたプログラムに依存します。プログラムのすべてがILE プログラムである場合には,この画面が表示されます。プログラムのいずれかがソース・デバッグ・データを持つOPMプログラムであり,OPMSRC(*YES)が指定された場合には,この画面が表示されます。プログラムのすべてがOPMプログラムであり,OPMSRC(*NO)が指定された場合には,この画面が表示されません。
- *NO
- ソース・デバッグ・プログラムの最初の画面は表示されません。
- *YES
- ソース・デバッグ・プログラムの最初の画面が表示されます。
| 上 |
ソース・デバッグ・プログラム (SRCDBGPGM)
使用するソース・デバッグ・プログラムを指定します。このパラメーターの説明については,IBM i Information Center(http://www.ibm.com/systems/i/infocenter/)の「プログラミング」カテゴリーの「API」トピック・コレクションを参照してください。
このパラメーターはILE環境で適用されるだけです。
単一値
- *SYSDFT
- システム・ソース・デバッグ・プログラムが使用されます。
修飾子1: ソース・デバッグ・プログラム
- 名前
- プログラムのデバッグに使用するプログラムの名前を指定してください。
修飾子2: ライブラリー
- *LIBL
- 最初に一致するものが見つかるまで,現行スレッドのライブラリー・リスト内のすべてのライブラリーが検索されます。
- *CURLIB
- ジョブの現行ライブラリーが検索されます。ジョブの現行ライブラリーとして指定されているライブラリーがない場合は,QGPLライブラリーが使用されます。
- 名前
- 検索するライブラリーの名前を指定してください。
| 上 |
監視されないメッセージ・プログラム (UNMONPGM)
監視されていないメッセージがデバッグ中のジョブで起こった時に呼び出されるユーザー提供のプログラムの修飾名を指定します。指定されたプログラムを呼び出す時に,プログラム名,反復レベル,高水準言語ステートメントID,停止点が起こった機械語命令番号,監視されていなかったメッセージ,メッセージ・データ,メッセージ・データの長さ,およびメッセージ参照キーを識別するパラメーターが渡されます。
このパラメーターが適用可能なのはOPM環境だけです。
渡されるパラメーターは次の様式になっています。
- プログラム名(10バイト)。停止点に到達したプログラムの名前を指定します。
- 反復レベル(5バイト)。停止点に到達したプログラムの反復レベル番号を指定します。この値は1から5桁の数字で,右側にブランクが埋め込まれます。
- ステートメントID (10バイト)。到達した高水準言語プログラムのステートメントIDを指定します。これは,停止点追加(ADDBKP)コマンドで指定されたステートメントIDです。停止点を指定するために機械語命令番号が使用されている場合には,このパラメーターに,スラッシュ(/)とその後に4桁の16進数機械語命令番号が続く値が入っています。
- 命令番号(5バイト)。ブレークポイントが到達した高水準言語ステートメントに対応する機械語命令番号を指定します。この機械語命令番号の前にスラッシュはありません。この値は,MI命令番号(後に1個以上のブランクが続けられた)を表す1から4桁の16進数で構成されます。プログラムが3番目のパラメーターに機械語命令番号を渡した場合には,3番目と4番目のパラメーターの値が同じになります。
- メッセージID (7バイト)。モニターされていないメッセージのIDを指定します。
- メッセージ・データ(256バイト)。モニターされていないメッセージと一緒に送られたメッセージ・データの最初の256バイトを指定します。
- メッセージ・データ長(5バイト)。モニターされていないメッセージと一緒に送られたメッセージ・データの長さを指定します。
- メッセージ(MRK) (4バイト)。モニターされていないメッセージのメッセージ参照キー(MRK)を指定します。
パラメーター値はすべて左寄せされて,右側にブランクが埋め込まれます。モニターされていないメッセージを持つプログラムに制御が戻されると,処理が続行されます。
単一値
- *NONE
- モニターされていないメッセージが現れた時に,プログラムは呼び出されません。
修飾子1: 監視されないメッセージ・プログラム
- 名前
- デバッグ中のジョブにモニターされていないメッセージが現れた時に呼び出されるユーザー提供プログラムの名前を指定してください。プログラムの実行後に,中断されていたプログラムに制御が戻されます。
修飾子2: ライブラリー
- *LIBL
- 最初に一致するものが見つかるまで,現行スレッドのライブラリー・リスト内のすべてのライブラリーが検索されます。
- *CURLIB
- ジョブの現行ライブラリーが検索されます。ジョブの現行ライブラリーとして指定されているライブラリーがない場合は,QGPLライブラリーが使用されます。
- 名前
- 検索するライブラリーの名前を指定してください。
| 上 |
暗号化解除鍵 (DBGENCKEY)
プログラムがコンパイルされた時に暗号鍵として指定された鍵を入力します。指定された鍵の値が16バイト未満の場合,16バイトまでX'40'が埋め込まれます。
すべてのコード・ページにわたってインバリアントではない文字が鍵に含まれている場合には,ジョブCCSIDがプログラムのコンパイル時に使用されたジョブCCSIDと同じであることを確認してください。同じでない場合,鍵が一致しない可能性があり,暗号化解除に失敗します。
単一値
- *NONE
- 暗号化解除鍵は,デバッグ・セッションの開始時に指定されません。暗号化解除鍵は「暗号化解除鍵の入力」パネルを使用して後で指定できます。
その他の値
修飾子1:暗号化解除鍵。
- 鍵
- 暗号化デバッグ・テキスト表示の暗号化解除に使用される16バイトの鍵を指定します。指定された鍵の値が16バイト未満の場合,16バイトまでX'40'が埋め込まれます。
| 上 |
例
例1:プログラムのデバッグの開始
STRDBG PGM(TESTLIB/PAYROLL) UPDPROD(*NO)
このコマンドは,テスト・ライブラリーTESTLIBにあるプログラムPAYROLLをデバッグするデバッグ・モードを開始します。トレースが使用される場合に,トレースを停止するまでに最大200のトレース・ステートメントをトレースで保管することができます。プログラムPAYROLLがバインド済みプログラムである場合には,「モジュール・ソースの表示」画面が表示され,プログラム入り口点を含むモジュールのソースが示されます。PAYROLLプログラムによって更新されるデータベース・ファイルは,すべてテスト・ライブラリーの中になければなりません。
例2:クラス・ファイルのデバッグの開始
STRDBG CLASS('FINANCIAL.PAYAPPLET')
このコマンドは,FINANCIALパッケージ内のクラスPAYAPPLETをデバッグするデバッグ・モードを開始します。
| 上 |
| 上 |