ページの先頭行へ戻る
NetCOBOL V12.2 PowerCOBOL ユーザーズガイド
FUJITSU Software

5.5.12 診断機能を利用する

診断機能は、アプリケーションエラーが発生した場合や実行時メッセージが表示されたときに、プログラムを診断し、診断情報をレポートファイルに出力します。レポートファイル名は、アプリケーションエラーが発生した場合に表示されるメッセージの中に表示されます。

PowerCOBOLの診断機能は、COBOLの診断機能をもとに構築されています。診断機能の詳細については、『NetCOBOL ユーザーズガイド』を参照してください。

以下に、診断機能を利用するために必要な環境と、PowerCOBOL固有の診断結果の見かたについて説明します。

診断機能を利用するには

PowerCOBOL固有の診断機能の対象となるのは、モジュールに登録された外部COBOLファイルの手続きおよびフォームのスクリプトにある手続きです。モジュールに登録されたオブジェクトファイルやライブラリファイルに対しては、COBOLの診断機能に準じた情報が出力されます。

PowerCOBOL固有の診断機能を利用する場合、以下のファイルが必要です。

各ファイルが生成されるフォルダについては、「5.5.4 ビルド時に作成されるファイル」を参照してください。

ファイル

説明

フォーム名.SVD

COBOLのデバッグ情報ファイルです。COBOLの診断機能を利用するために必要です。

モジュール名.PLI

PowerCOBOLの行情報ファイルです。PowerCOBOL固有の診断情報を出力するために必要です。

PowerCOBOL固有の診断機能を利用するには、PowerCOBOLの行情報ファイル"モジュール名.PLI"が必要です。このファイルは、ターゲットフォルダに生成されます。このファイルを削除すると、PowerCOBOL固有の診断情報は出力されず、COBOLの診断機能に準じた情報だけが出力されます。

ビルドモードにより、診断機能を利用するための設定方法が異なります。

リリースモードの場合

ビルドモードがリリースモードの場合、プロジェクトのプロパティ設定ダイアログボックスの[ビルド]タブで、[診断機能を使用する]をチェック状態にしてビルドすると、診断機能を利用することができます。

ポイント

リリースモードで作成されるデバッグ情報ファイル"フォーム名.SVD"は、翻訳オプション"OPTIMIZE"を指定することによってサイズを小さくできます。

注意

リリースモードで作成した実行可能プログラムを、他のフォルダに複写または移動して実行する場合、実行可能プログラムと同じフォルダにあるデバッグ情報ファイル(*.SVDおよび*.PLI)も複写または移動してください。デバッグ情報ファイルを複写または移動しなかった場合、言語イメージの診断情報、およびPowerCOBOL固有の診断情報は出力されません。

デバッグモードの場合

ビルドモードがデバッグモードの場合、プロジェクトのプロパティ設定ダイアログボックスの[ビルド]タブの[診断機能を使用する]のチェック状態に関係なく、診断機能を利用できます。

ポイント

複数のプロジェクトから構成されるプログラムで診断機能を利用する場合には、最初に起動されるモジュールのプロパティ設定ダイアログボックスで[デバッグ]タブにある[デバッグ情報ファイル格納フォルダ]に、他のプロジェクトで作成したモジュールのデバッグ情報ファイル"モジュール名\Debug\フォーム名.SVD"が格納されているフォルダを設定してください。

注意

  • デバッグモードで作成した実行可能プログラムを、PowerCOBOLの開発環境の外で実行させる場合や、他のフォルダに複写または移動して実行させる場合、デバッグ情報ファイルが格納されているフォルダを参照できないため、言語イメージの診断情報およびPowerCOBOL固有の診断情報は出力されません。

  • 実行環境変数"@GOPT"でエラー検出時の処理実行回数が指定されている場合、PowerCOBOLで指定する[メッセージを出力させる回数]より、実行環境変数"@GOPT"での指定が優先されます。

PowerCOBOL固有部分の診断結果の見かた

診断機能のレポートに出力されるPowerCOBOL固有の部分の見かたを説明します。以下に、診断結果の出力例を示します。

:	
《問題箇所》
スレッドID	: 000000AC
レジスタ	: EAX=00000000  EBX=0012FAA4  ECX=00000000  EDX=00000000  ESI=0012FA68
	: EDI=0012FB8C  EIP=00401377  ESP=0012FA08  EBP=0012FB54  EFL=00000283
	: CS=001B  SS=0023  DS=0023  ES=0023  FS=0038  GS=0000
スタックコミット	: 00004000 (トップ:00130000, ベース:0012C000)
命令	:  アドレス   +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f
	00401367 00 0F BF 05 42 60 40 00 99 0F BF 0D 3A 60 40 00
フォールト	->00401377 F7 F9 66 89 45 DA 0F BF 45 DA B1 04 B5 00 8D 3D
	
モジュールファイル : C:\Samples\Release\Main.exe
セクション相対位置 : .text+00000377
EXPORT相対位置 : MAINFORM+00000343
シンボル相対位置 : MAINFORM+00000377
翻訳情報 : ShiftJIS, シングルスレッド , NOOPTIMIZE
PowerCOBOLプロジェクトファイル : C:\Samples\Abend01.ppj
モジュール : Main
フォーム : MainForm
スクリプト : MainForm-Click
行位置 : 8

<呼出経路>
[  1]-------------------------------------------------------------------------
モジュールファイル : C:\Samples\Release\Main.exe
セクション相対位置 : .text+00000F8
EXPORT相対位置 : MAINFORM+000001C4
シンボル相対位置 : MAINFORM+000001F8
翻訳情報 : ShiftJIS, シングルスレッド , NOOPTIMIZE
PowerCOBOLプロジェクトファイル : C:\Samples\Abend01.ppj
モジュール : Main
フォーム : MainForm
行位置 : 35
[  2]-------------------------------------------------------------------------
:
PowerCOBOLプロジェクトファイル

異常が検出されたPowerCOBOLのプロジェクトファイル名です。診断された異常が、このプロジェクトで作成された実行可能プログラム内で発生していることを示しています。PowerCOBOLの行情報ファイルが見つからない場合は、不明(Unknown)と表示されます。

モジュール

異常が検出されたモジュールの名前です。このモジュールに含まれる手続きの中に異常があります。

フォーム

異常が検出されたフォームの名前です。このフォームに含まれるスクリプトの中に異常があります。

スクリプトレット

異常が検出された手続きの名前です。この手続きの中に異常があります。

COBOLファイル

PowerCOBOLのモジュールに登録された外部COBOLファイル内で異常が検出された場合は、そのオブジェクト名と、ファイル名が出力されます。

行位置

異常が検出された手続き中での行番号、またはCOBOLファイル中でのファイル内相対行番号です。

中断位置・情報ファイルと出力される情報との関係

異常が検出され中断された位置の情報は、その中断位置と情報ファイルにより、以下の表のようになります。

情報名

中断位置

情報ファイル

備考

イベント手続き

外部COBOLファイル

フォームの外部手続き

行情報なし

デバッグ情報なし

行・デバッグ情報なし

モジュールファイル

セクション相対位置

EXPORT相対位置

シンボル相対位置

*2

*2

PowerCOBOL
プロジェクトファイルあり

*1

PowerCOBOL固有

モジュール

PowerCOBOL固有

フォーム

PowerCOBOL固有

スクリプトレット

PowerCOBOL固有

COBOLファイル

PowerCOBOL固有

行位置

PowerCOBOL固有

ソースファイル

外部プログラム
/クラス

内部プログラム
/メソッド

文位置

*1: PowerCOBOL行情報ファイルが見つからない場合には、PowerCOBOLプロジェクトファイルは不明(Unknown)となります。

*2: LINKのオプションの指定(/DEBUG)により、出力されます。