メニューボタン
サポートチーム便り2011.02.23

*SOURCEでデバッグする

Question

*SOURCE デバッグ・モードで CL プログラムをデバッグしようと考えています。このモードでは、デバッグ中にソース・ファイルのメンバーを参照してオリジナルの HLL ステートメントを表示できると思っています。このモードを呼び出すため、Debugging View オプションを次のように設定しました。

Debugging view . . . . . . . . . *SOURCE

CL プログラムによっては、これが効果があります。STRDBG を指定したプログラムを実行していると、ソース・プログラム・ステートメントが表示されます。ところが、他の CL プログラムについては *SOURCE が機能しません。しかし、*SOURCE ではなく *LIST を指定すると、デバッグ中にまたソース・コードを参照できるようになります。*SOURCE オプションと *LIST オプションの違いは何なのでしょうか。

Answer

Scott Klement が 2005 年 1 月 27 日付の彼のニュースレターでその違いを説明していました。あなたのために、ここでそれを再度取り上げます。

OS/400 の V3 から、IBM は STRDBG コマンドをインターフェース可能なデバッガーにもなるようアップグレードしました。ISDB と異なり、これはすべての ILE 言語、OPM (ILE 以前にリリースされたオリジナル・プログラム・モデル) 言語、Java さえ含む、iSeries で動作するすべての言語で動作します。それだけでなく、それらの言語を一度に扱うことができます。

例えば、ILE プログラムを呼び出す OPM CL プログラムがあるとしましょう。ILE プログラムのメイン・プロシージャーは RPG IV で作成されていますが、C および COBOL で作成されたモジュールも呼び出します。「ステップイントゥ」ファンクション・キー F22 を使用して、それぞれのプログラムおよびモジュールが呼び出されると同時に、それらにステップイントゥし、コードの実行中にこれら異なる言語を効果的に切り替えることができます。とても便利な機能なのです。

プログラムの対話式デバッグを有効にするには、プログラムのコンパイル時にデバッグ・ビューを指定する必要があります。デバッグ・ビューは、任意の ILE コンパイラー上で DBGVIEW パラメーターを使用して指定します。以下のリストで使用できる値を説明しています。

  • DBGVIEW(*STMT) = これはデフォルトで、ビューにステートメント番号だけ入っています。このオプションを使用する場合は、プログラムを対話式にデバッグすることはできません。
  • DBGVIEW(*SOURCE) = これにより、デバッガーはプログラムのデバッグ時に、そのソース・メンバーを表示できます。この結果、ISDB が提供する内容と似たような結果になります。このオプションの問題は、ソース・コードが変更されると、正しくない結果が表示される場合があるということです。また、プログラム・オブジェクトが実動システムに移動されると、ソース・メンバーが使用できなくなる場合があります。これは問題です。
  • DBGVIEW(*LIST) = コンパイル・リストのコピーがプログラム・オブジェクトに組み込まれています。デバッガーでプログラムを表示すると、ソース・メンバーを表示する代わりに、そのコンパイル・リストが使用されます。そうして、ソースが変更される、または使用できなくなっても、プログラムをデバッグできます。このオプションは私も使用しており、お勧めします。

適切なデバッグ・ビューでプログラムをいったんコンパイルしたら、以下のコマンドを入力してデバッガーを開始できます。

===> STRDBG PGM(myProgram)
....

あわせて読みたい記事

PAGE TOP