• 検索結果がありません。

診断機能を利用する

ドキュメント内 PowerCOBOL ユーザーズガイド (ページ 148-154)

第5章  PowerCOBOLを使いこなそう

5.5  実行可能プログラム作成時および実行 時の便利な機能 時の便利な機能

5.5.12  診断機能を利用する

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

されるメッセージの中に表示されます。 

PowerCOBOLの診断機能は、COBOLの診断機能をもとに構築されています。診断 機能の詳細については、『NetCOBOL 使用手引書』を参照してください。 

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

診断機能を利用するには 

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

COBOLの診断機能に準じた情報が出力されます。 

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

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

ファイル名  意味 

フォーム名.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ファイル中でのファイル 内相対行番号です。 

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

異常が検出され中断された位置の情報は、その中断位置と情報ファイルにより、

以下の表のようになります。 

中断位置  情報ファイル  情報名 

 

 

 

 

 

 

備考 

モジュールファイル  ○  ○  ○  ○  ○  ○    セクション相対位置  ○  ○  ○  ○  ○  ○    EXPORT相対位置  ○  ○  ○  ○  ○  ○    シンボル相対位置  ○  ○  ○  ○  *2  *2    PowerCOBOL 

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

○  ○  ○  *1  −  − 

PowerCOBOL固有 

モジュール  ○  ○  ○  −  −  −  PowerCOBOL固有  フォーム  ○  −  ○  −  −  −  PowerCOBOL固有  スクリプトレット  ○  −  −  −  −  −  PowerCOBOL固有  COBOLファイル  −  ○  −  −  −  −  PowerCOBOL固有  行位置  ○  ○  ○  −  −  −  PowerCOBOL固有  ソースファイル  −  −  −  ○  −  −   

外部プログラム 

/クラス  −  ○  −  ○  −  −    内部プログラム 

/メソッド  −  ○  −  ○  −  −    文位置  −  −  −  ○  −  −   

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

*2: LINKのオプションの指定(/DEBUG,/DEBUGTYPE:{COFF│BOTH})により、出力 されます。 

 

ドキュメント内 PowerCOBOL ユーザーズガイド (ページ 148-154)