自己学習メモインデックス
概要
ここではRPG Ⅳプログラミングを進めていく上で使うことになってくるSTRDBG
でのラインデバッグ機能について、使い方やコマンドなどをまとめています。
随時更新していこうと思いますが、まずは現段階で自分が使った(理解した)ものだけまとめていこうと思います。
デバッグチートシート
RPGプログラムのラインデバッグ開始方法
ラインデバッグを行うための準備
ラインデバッグを行うためには、RPGソースをコンパイルする際のオプションDBGVIEW
に*SOURCE
を指定してコンパイルしておく必要があります。
(実際には*LISTを指定して行うこともあるみたいですが、よくわかってないのでここでは割愛)
- コンパイル対象のソースコードのOPTに
14
と入力しF4
キーを押下 -
F10
キーを押下して追加パラメータを表示 - Page Downで
Debugging views . . . . . . . . DBGVIEW
のパラメータ指定の画面を表示し、*SOURCE
と入力 - Enterキーを何度か押してRPGプログラムをコンパイル
STRDBGコマンドを実行してブレークポイントを設定
以下のコマンドを実行してデバッグを開始する。
- PGM
- ライブラリ/RPGソースを指定
- UPDPROD
- デフォルトは*NO
- このパラメータは、ジョブがデバッグ・モードになっている時に、プロダクション・ライブラリー中のデータベース・ファイルをレコードの更新または新しいレコードの追加のためにオープンできるかどうか指定する。
https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_74/cl/strdbg.htm#STRDBG.UPDPROD - *YESを指定すると、ファイルを更新・追加のためにオープン可能となります。
STRDBG PGM(YAMAGUCHI1/RPG91) UPDPROD(*YES)
上記コマンドを実行した後、Display Module Source
の画面が表示されます。
ここでブレークポイントを設定します。
ブレークポイントは、以下2つの方法で指定出来ます。
- 対象の行にカーソルを合わせて
F6
キーを押下 -
Debug . . .
の入力エリアにbreak {行番号}
を入力してEnter
ブレークポイントを設定したらF3
キーでDisplay Module Source
画面を閉じます。
対象のRPGプログラムを実行
call rpg91
プログラムを実行すると、ブレークポイントを設定した行番号のところで処理が止まって、Display Module Source
画面が表示された状態となります。
この画面の状態になれば、ようやくデバッグスタートです。
デバッグモードを終了
STRDBGコマンドを実行すると、ジョブがデバッグモードになるようです。
この状態で、もう一回STRDBGコマンドを実行するとエラーとなります。
一度デバッグモードにしたら、ENDDBG
コマンドを実行してデバッグモードを終了する必要があります。
1ステップ次の行に処理を移す
F10
キーを押下すると処理が1ステップ次に進む。
次のブレークポイントまで一気に処理を進める
F12
キーを押下すると、処理が次のブレークポイントまで一気に進みます。
F10キーは1ステップですが、まとめて一気に実行したい場合に使います。
変数の中身を確認
- 対象の変数にカーソルを合わせて
F11
キーを押下 eval {変数名}
変数の値を変更
eval {変数名} = {値}
変数の属性(データ型,サイズ)の確認
attr {変数名}
attr i
特定の条件に一致したときにブレークポイントが動作して処理が止まるようにする
例えば、 iが1から10までのFOR文があったとして、 i=5のときにブレークポイントが動作して処理が止まるようにしたい。といった場合など。
break {行番号} when i = 5
条件指定でブレークポイントを設定した後は、F12キーを押下して処理を一気に進める。
OPTION(*NODEBUGIO)
入出力仕様書に停止点を生成するか指定するオプションで、*NODEBUGIO
とすることで入出力仕様書に停止点を生成しない。
RPG Ⅳから使えるようになった指定のようで、デフォルトは*DEBUGIO
。
指定方法としては
- RPGのH仕様書に
H OPTION(*NODEBUGIO)
と定義する -
CRTBNDRPG
コマンドのオプションで*NODEBUGIO
を指定する