COBOL2002 使用の手引 手引編


32.5.9 デバッグの設定

デバッグを設定するコンパイラオプションについて,説明します。

〈この項の構成〉

(1) -DebugLineオプション

(a) 形式

-DebugLine
-noDebugLine

(b) 機能

-DebugLine

原始プログラム中のデバッグ行をコンパイルの対象とします。デバッグ行とは,原始プログラムの標識領域にデバッグ標識(「D」または「d」)が記述されているか,浮動デバッグ指示子(「>>D」)が記述されている行のことです。

このシステムでは,WITH DEBUGGING MODE句は覚え書きとみなされるので,デバッグ行を有効にするためにはこのオプションの指定が必要です。

-noDebugLine

-DebugLineオプションの指定を打ち消します。

(2) -DebugInfオプション

(a) 形式

-DebugInf〔,Trace〕
-noDebugInf

(b) 機能

-DebugInf

実行時に異常終了した場合,または実行時エラーが発生した場合,異常終了時要約情報リストを出力します。異常終了時要約情報リストの詳細については,「36.2 異常終了時要約情報リスト」を参照してください。

-DebugInf,Trace

異常終了時要約情報リスト中にトレースバック情報を出力します。

-noDebugInf

-DebugInfオプションの指定を打ち消します。

(c) 注意事項

  • -DebugInfオプション,-TDInfオプション,-CVInfオプション,-DebugRangeオプション,-DebugCompatiオプション,-DebugDataオプション,および-TestCmdオプションを指定していない場合,エラー/デバッグ情報(異常終了時要約情報リストやデータ領域ダンプリスト)が出力されません。

  • -DebugInfオプションと-Compile,CheckOnlyオプションを同時に指定した場合,-DebugInfオプションが無効となります。

  • -DebugInf,Traceオプションを指定すると,実行時の処理速度が遅くなる可能性があります。このため,-DebugInf,Traceオプションは,デバッグの目的でコンパイルするときだけ指定してください。

(3) -DebugCompatiオプション

(a) 形式

-DebugCompati
-noDebugCompati

(b) 機能

-DebugCompati

次のチェックをします。なお,表要素または部分参照された一意名にOCCURS DEPENDINGONの指定がある場合は,実行時点の制御変数の値を用いてチェックします。

  • 表操作で使用する添字または指標名が指す表要素が表の範囲内であるかどうか。

  • 部分参照の指定が一意名の範囲内であるかどうか。

  • プログラム間で整合性が取れているかどうか。

ただし,実行時環境変数CBLPRMCHKWにNOCHKを指定したときは,プログラム間で整合性が取れていなくてもエラーとしないで,実行を継続します。

詳細は,「36.5 プログラム間整合性チェック」を参照してください。

-noDebugCompati

-DebugCompatiオプションの指定を打ち消します。

(c) 注意事項

  • -DebugCompatiオプションと-Compile,CheckOnlyオプションを同時に指定した場合,-DebugCompatiオプションが無効となります。

  • -DebugCompatiオプションを指定すると,-DebugInfオプションが仮定されます。

  • -DebugCompatiオプションを指定すると,実行時の処理速度が遅くなる可能性があります。このため,-DebugCompatiオプションは,デバッグの目的でコンパイルするときだけ指定してください。

  • -DebugCompatiオプションを指定すると,一部の例外名に対するTURN指令が無効となります。詳細は「21.8.2 例外検出での注意事項」の「(4) コンパイラオプションとの関連性」を参照してください。

(4) -DebugDataオプション

(a) 形式

-DebugData〔,ValueHex〕
-noDebugData

(b) 機能

-DebugData

外部または内部10進項目に対して,格納値がデータ項目の属性と矛盾している場合,データ例外エラーを検出します。

詳細は,「36.7 データ例外検出機能」を参照してください。

-DebugData,ValueHex

データ例外検知機能でデータ例外が検出された場合,出力されるエラーメッセージにデータ項目の属性と矛盾している格納値を16進数で表示します。

詳細は,「36.7 データ例外検出機能」を参照してください。

-noDebugData

-DebugDataオプションの指定を打ち消します。

(c) 注意事項

  • -DebugDataオプションと-Compile,CheckOnlyオプションを同時に指定した場合,-DebugDataオプションが無効となります。

  • -DebugDataオプションを指定すると,-DebugInfオプションが仮定されます。

  • -DebugDataオプションを指定すると,実行時の処理速度が遅くなる可能性があります。このため,-DebugDataオプションは,デバッグの目的でコンパイルするときだけ指定してください。

  • ValueHexサブオプションを指定した場合,-noDebugDataオプションの指定がないかぎり,ValueHexサブオプションの指定は有効となります。ValueHexサブオプションの指定を打ち消すときは,-noDebugDataオプションを指定してください。

    (例)

    ccbl2002 -DebugData -DebugData,ValueHex -DebugData …
    (コンパイル結果)
     -DebugData,ValueHex
     
    ccbl2002 -DebugData,ValueHex -noDebugData -DebugData …
    (コンパイル結果)
     -DebugData

(5) -TDInfオプション

(a) 形式

-TDInf
-noTDInf

(b) 機能

-TDInf

デバッグ情報を含むプログラム情報ファイル(.cbp)を出力します。

-TDInfオプションを指定したプログラムをテストデバッガでデバッグする場合,-DebugCompatiオプションの指定の有無に関係なく,プログラム間の整合性がチェックされます。プログラム間の整合性チェックについては,「(3) -DebugCompatiオプション」を参照してください。

-noTDInf

-TDInfオプションの指定を打ち消します。

(c) 注意事項

  • -TDInfオプションと-Compile,CheckOnlyオプションを同時に指定した場合,-TDInfオプションが無効となります。

  • -TDInfオプションを指定すると,-DebugInfオプションが仮定されます。

  • -TDInfオプションと-Optimize,3オプションを同時に指定すると,-Optimize,3オプションが無効になり,-Optimize,2オプションが仮定されます。

  • コンパイルとリンクを別々に実行する場合で,-TDInfオプションを指定してコンパイルしたときは,ccbl2002コマンドでリンクを実行するときにも,同じオプションを指定する必要があります。

  • -TDInfオプションを指定すると,実行時の処理速度が遅くなる可能性があります。このため,-TDInfオプションは,デバッグの目的でコンパイルするときだけ指定してください。

  • -TDInfオプションはテストデバッガのためにゼロによる除算チェックなど最適化に影響を与えるオブジェクトコードを生成します。これによって,-TDInfオプションを指定することで,異常終了時要約リストなどの行番号/欄の情報が変化することがあります。行番号/欄の情報を常に正しく保つためには,-Optimize,0オプションを指定する必要があります。

(6) -CVInfオプション

(a) 形式

-CVInf
-noCVInf

(b) 機能

-CVInf

カバレージ情報を含むプログラム情報ファイル(.cbp)を出力します。

-noCVInf

-CVInfオプションの指定を打ち消します。

(c) 注意事項

  • -CVInfオプションと-Compile,CheckOnlyオプションを同時に指定した場合,-CVInfオプションが無効となります。

  • -CVInfオプションを指定すると,-DebugInfオプションが仮定されます。

  • コンパイルとリンクを別々に実行する場合で,-CVInfオプションを指定してコンパイルしたときは,ccbl2002コマンドでリンクを実行するときにも,同じオプションを指定する必要があります。

  • -CVInfオプションを指定すると,実行時の処理速度が遅くなる可能性があります。このため,-CVInfオプションは,デバッグの目的でコンパイルするときだけ指定してください。

  • -CVInfオプションを指定してカバレージ情報を出力できるのは,ccbl2002コマンドでコンパイルして出力したプログラム情報ファイルだけです。COBOL85で作成したプログラム情報ファイルを使用した場合,ccbl2002コマンドに-CVInfオプションを指定してコンパイルしても,プログラム情報ファイルにカバレージ情報を出力しません。

(7) -DebugRangeオプション

(a) 形式

-DebugRange
-noDebugRange

(b) 機能

-DebugRange

表操作で使用する添字および指標名の値が,次元ごとにOCCURS句で指定した繰り返し回数の範囲内であるかどうかを,実行時に調べます。

なお,表要素にOCCURS DEPENDING ONの指定がある場合は,実行時点の制御変数の値を用いて調べます。

-noDebugRange

-DebugRangeオプションの指定を打ち消します。

(c) 注意事項

  • -DebugRangeオプションと-Compile,CheckOnlyオプションを同時に指定した場合,-DebugRangeオプションが無効となります。

  • -DebugRangeオプションを指定すると,-DebugInfオプションおよび-DebugCompatiオプションが仮定されます。

  • -DebugRangeオプションを指定すると,実行時の処理速度が遅くなる可能性があります。このため,-DebugRangeオプションは,デバッグの目的でコンパイルするときだけ指定してください。

  • -DebugRangeオプションを指定すると,一部の例外名に対するTURN指令が無効となります。詳細は「21.8.2 例外検出での注意事項」の「(4) コンパイラオプションとの関連性」を参照してください。

(8) -TestCmdオプション

(a) 形式

-TestCmd{,Full|,Break|,Sim}+
-noTestCmd

(b) 機能

TDコマンド格納ファイルに出力する情報の種類を指定します。

-TestCmd,Full

中断点情報,シミュレーション情報のTDコマンドをTDコマンド格納ファイル(.tdi)に出力します。

-TestCmd,Break

中断点情報のTDコマンドをTDコマンド格納ファイル(.tdi)に出力します。

-TestCmd,Sim

シミュレーション情報のTDコマンドをTDコマンド格納ファイル(.tds)に出力します。

-noTestCmd

-TestCmdオプションの指定を打ち消します。

(c) 注意事項

  • -TestCmd,Fullオプションと-TestCmd,Breakオプション,または-TestCmd,Fullオプションと-TestCmd,Simオプションを重複して指定した場合,-TestCmd,Fullオプションが有効となります。

  • -TestCmdオプションを指定すると,-DebugInfおよび-TDInfオプションが仮定されます。

  • コンパイルとリンクを別々にする場合で,コンパイル時に-TestCmdオプションを指定したときは,ccbl2002コマンドでのリンク時に-TDInfオプションを指定する必要があります。

(9) -SimMainオプション

(a) 形式

-SimMain プログラム名
-noSimMain

(b) 機能

-SimMain プログラム名

テストデバッガの主プログラムシミュレーション機能を使用します。

プログラム名には,主プログラムシミュレーションの対象となる副プログラムの名称(最外側のプログラムのプログラム名段落で指定した名称)を指定します。

このオプションを指定すると,主プログラムシミュレーション用の一時的なCOBOLソースファイル(擬似主プログラム)が内部的に生成され,コンパイルされます。コンパイルによって生成されたオブジェクトファイルは,リンク時に取り込まれます。ここで生成されたソースファイル,およびオブジェクトファイルは,コンパイル終了時に消去されます。

また,テストデバッガで必要な擬似主プログラム用のプログラム情報ファイル(.cbs)が生成されます。テストデバッガの主プログラムシミュレーション機能を使用するとき,生成されたプログラム情報ファイル(.cbs)をテストデバッガ環境に指定してください。生成するプログラム情報ファイルの名称については,「(12) 主/副プログラムシミュレーションで生成する擬似プログラム用プログラム情報ファイル」を参照してください。

擬似主プログラムを生成するCOBOLソースファイルの情報は,プログラム情報ファイル(.cbp)から取得されます。このため,このオプションを指定する場合は,次のどちらかをする必要があります。

  • -TDInfオプションを同時に指定してコンパイルする。

  • 副プログラムを含むCOBOLソースファイルを-TDInfオプションを指定してコンパイルし,生成された.cbpファイルを,環境変数CBLPIDIRで指定したディレクトリまたはカレントディレクトリに入れておく。

-OutputFileオプションで実行可能ファイル名を指定しないと,生成される主プログラムの実行可能ファイル名はa.outとなります。

-noSimMain

-SimMainオプションの指定を打ち消します。

(c) 注意事項

  • 下記に示すデータ項目を主プログラムシミュレーションの対象となる副プログラムの手続き部見出しに指定することはできません。

    • プロパティ項目

    • 関数一意名

  • -SimMainオプションを指定した場合,コンパイラのバージョンが03-01未満で作成したプログラム情報ファイル(.cbp)は使用できません。使用した場合は,コンパイルエラーとなり,コンパイルを中止します。

  • 共用ライブラリやアーカイブライブラリを使用しての主プログラムシミュレーションはできません。

  • -LiteralExtendオプションと同時に指定した場合は,-LiteralExtendオプションが無効となります。

(10) -SimSubオプション

(a) 形式

-SimSub プログラム名〔,…〕
-noSimSub

(b) 機能

-SimSub プログラム名〔,…〕

テストデバッガの副プログラムシミュレーション機能を使用します。

プログラム名には,副プログラムシミュレーションの対象となる副プログラムの名称(CALL文で指定した名称)を指定します。ただし,副プログラムの呼び出し方法は,CALL文の定数指定呼び出しでなければなりません。

このオプションを指定すると,副プログラムシミュレーション用の一時的なCOBOLソースファイル(擬似副プログラム)が内部的に生成され,コンパイルされます。コンパイルによって生成されたオブジェクトファイルは,リンク時に取り込まれます。ここで生成されたソースファイル,およびオブジェクトファイルは,コンパイル終了時に消去されます。

また,テストデバッガで必要な擬似副プログラム用のプログラム情報ファイル(.cbs)が生成されます。テストデバッガの副プログラムシミュレーション機能を使用するとき,生成されたプログラム情報ファイル(.cbs)をテストデバッガ環境に指定してください。生成するプログラム情報ファイルの名称については,「(12) 主/副プログラムシミュレーションで生成する擬似プログラム用プログラム情報ファイル」を参照してください。

擬似副プログラムを生成するCOBOLソースファイルの情報は,プログラム情報ファイル(.cbp)から取得されます。このため,このオプションを指定する場合は,次のどちらかをする必要があります。

  • -TDInfオプションを同時に指定してコンパイルする。

  • 副プログラムを呼び出しているCOBOLソースファイルを-TDInfオプションを指定してコンパイルし,生成された.cbpファイルを,環境変数CBLPIDIRで指定したディレクトリまたはカレントディレクトリに入れておく。

-noSimSub

-SimSubオプションの指定を打ち消します。

(c) 注意事項

  • 下記に示すデータ項目を副プログラムシミュレーションの対象となるプログラムに指定したCALL文の引数に指定することはできません。

    • プロパティ項目

    • 関数一意名

  • -SimSubオプションを指定した場合,コンパイラのバージョンが03-01未満で作成したプログラム情報ファイル(.cbp)は使用できません。使用した場合は,コンパイルエラーとなり,コンパイルを中止します。

  • 共用ライブラリやアーカイブライブラリを使用しての副プログラムシミュレーションはできません。

  • -LiteralExtendオプションと同時に指定した場合は,-LiteralExtendオプションが無効となります。

(11) -SimIdentオプション

(a) 形式

-SimIdent
-noSimIdent

(b) 機能

-SimIdent

テストデバッガの副プログラムシミュレーション機能を使用します。この場合,副プログラムシミュレーションの対象となるのは,一意名呼び出しのCALL文を指定したプログラムです。

このオプションを指定すると,副プログラムシミュレーション用の一時的なCOBOLソースファイルが内部的に生成され,コンパイルされます。コンパイルによって生成されたオブジェクトファイルは,リンク時に取り込まれます。ここで生成されたソースファイル,およびオブジェクトファイルは,コンパイル終了時に消去されます。

また,テストデバッガで必要な擬似副プログラム用のプログラム情報ファイル(.cbs)が生成されます。テストデバッガの副プログラムシミュレーション機能を使用するとき,生成されたプログラム情報ファイル(.cbs)をテストデバッガ環境に指定してください。生成するプログラム情報ファイルの名称については,「(12) 主/副プログラムシミュレーションで生成する擬似プログラム用プログラム情報ファイル」を参照してください。

擬似副プログラムを生成するCOBOLソースファイルの情報は,プログラム情報ファイル(.cbp)から取得されます。このため,このオプションを指定する場合は,次のどちらかをする必要があります。

  • -TDInfオプションを同時に指定してコンパイルする。

  • 副プログラムを呼び出しているCOBOLソースファイルを-TDInfオプションを指定してコンパイルし,生成された.cbpファイルを,環境変数CBLPIDIRで指定したディレクトリまたはカレントディレクトリに入れておく。

注意事項
  • 下記に示すデータ項目を副プログラムシミュレーションの対象となるプログラムに指定したCALL文の引数に指定することはできません。

    ・プロパティ項目

    ・関数一意名

  • 共用ライブラリやアーカイブライブラリを使用しての副プログラムシミュレーションはできません。

-noSimIdent

-SimIdentオプションの指定を打ち消します。

(c) 注意事項

  • 下記に示すデータ項目を副プログラムシミュレーションの対象となるプログラムに指定したCALL文の引数に指定することはできません。

    • プロパティ項目

    • 関数一意名

  • -SimIdentオプションを指定した場合,コンパイラのバージョンが03-01未満で作成したプログラム情報ファイル(.cbp)は使用できません。使用した場合は,コンパイルエラーとなり,コンパイルを中止します。

  • 共用ライブラリやアーカイブライブラリを使用しての副プログラムシミュレーションはできません。

  • -LiteralExtendオプションと同時に指定した場合は,-LiteralExtendオプションが無効となります。

(12) 主/副プログラムシミュレーションで生成する擬似プログラム用プログラム情報ファイル

主/副プログラムシミュレーションでは,テストデバッガで必要な情報である擬似プログラム用プログラム情報ファイル(.cbs)が生成されます。擬似プログラム用プログラム情報ファイル(.cbs)は,カレントディレクトリ,または環境変数CBLPIDIRで指定したディレクトリに出力されます。

生成される擬似プログラム用プログラム情報ファイル(.cbs)の名称規則を,次に示します。