18.6.4 動的なリンクのプログラム検索トレース機能
プログラム検索トレース機能では,次のトレース情報を出力します。
-
動的なリンクによる,プログラム呼び出し時のDLLの検索情報
-
プレロード時のDLLのロード情報
(1) 環境変数CBLPGMSEARCHTRC
実行時環境変数CBLPGMSEARCHTRCには,トレース情報を出力するファイル名を指定します。
- 形式
CBLPGMSEARCHTRC=プログラム検索トレースファイル名
- 規則
-
-
プログラム検索トレースファイル名は,絶対パスで指定してください。
-
プログラム検索トレースファイル名のパスに誤りがある,アクセス権がないなどの理由で,プログラム検索トレースファイルが開けない場合,警告メッセージが出力されます。このとき,プログラム検索トレース情報は出力されません。
-
次のどれかに該当するCALL文では,プログラム検索トレース情報は出力されません。
・-DynamicLink,Callオプションの指定がないCOBOLプログラムの定数指定のCALL文
・-DynamicLink,Callオプションを指定したCOBOLプログラムの定数指定のCALL文による内部プログラム呼び出し
・-DynamicLink,Callオプションを指定したCOBOLプログラムの定数指定のCALL文による2回目以降のプログラム呼び出し
-
実行時環境変数CBLPGMSEARCHTRCに指定したプログラム検索トレースファイル名は,次の形式のファイル名に変更されて出力されます。
[形式]
ファイル名[_i]_j.拡張子
i:スレッド識別子の値です。マルチスレッド対応COBOLプログラムのときだけ付加されます。
j:管理番号です。1または2が付加されます。
-
プログラム検索トレースファイルのファイルサイズが実行時環境変数CBLPGMSEARCHTRC_SIZEの指定値を超えた場合,管理番号を切り替えて,ファイルの先頭からトレース情報が出力されます。切り替え後のファイル名と同一名称のファイルが存在する場合,同一名称のファイルは削除されます。必要な場合は,削除される前にバックアップをとってください。
-
複数プロセスが並列で実行される場合,プログラム検索トレースファイル名には一意となる名称を指定する必要があります。同じプログラム検索トレースファイル名を指定し,プログラムを並列で実行した場合のプログラム検索トレースの出力結果は保証しません。
-
-DynamicLink,Callオプションを指定したCOBOLプログラムでADDR関数にプログラム名を指定した場合,ADDR関数でのプログラム検索情報がCALL文のプログラム検索トレースとして出力されます。
-
ディスクの空き容量不足などで,プログラム検索トレースファイルへのトレース出力中にエラーが発生した場合は,それ以降のトレース情報は出力されません。なお,このとき,実行時メッセージは出力されません。
-
(2) 環境変数CBLPGMSEARCHTRC_SIZE
実行時環境変数CBLPGMSEARCHTRC_SIZEには,プログラム検索トレースファイル名を切り替えるサイズを指定します。
- 形式
CBLPGMSEARCHTRC_SIZE=プログラム検索トレースファイル名を切り替えるサイズ(1〜2,000,000)
- 規則
-
-
ファイルサイズはKB単位で指定してください。
-
指定に誤りがある場合,または指定がない場合は10,240が仮定されます。
-
実行時環境変数CBLPGMSEARCHTRC_SIZEの指定に従い,プログラム検索トレースファイルのサイズが指定値の上限を超えた場合,ファイル名の管理番号が切り替えられます。
切り替え先のファイルが開けないときは,警告メッセージが出力されます。なお,それ以降のプログラム検索トレースは出力されません。
-
プログラム検索トレースファイルの管理番号1のファイルが存在しない場合は,管理番号1のファイルにトレース情報が出力されます。管理番号1のファイルがすでに存在する場合は,次に示す管理番号のファイルにトレース情報が出力されます。
管理番号1ファイル
管理番号2のファイル
トレース情報出力
ファイルサイズが上限を超えていない
−
管理番号1のファイルに追加書きで出力する
ファイルサイズが上限を超えている
ファイルが存在しない
管理番号2のファイルを作成して出力する
ファイルが存在する
ファイルサイズが上限を超えていない
管理番号2のファイルに追加書きで出力する
ファイルサイズが上限を超えている
最終更新日時が古い管理番号のファイルを削除,作成して出力する
-
(3) 注意事項
-
プログラム検索トレース機能機能はデバッグ機能です。プログラム検索トレース機能を使用すると,動的なリンクの実行性能が低下するため,デバッグ時にだけ使用してください。
-
環境変数CBLLDLLにパスを含むDLL名を指定している場合,プログラム検索トレースのDLL名には指定した値がそのまま出力されます。
-
環境変数CBLLDLLにパスがないDLL名を指定している,または環境変数CBLLPROGDLLを指定している場合は,プログラム検索トレースのDLL名には検索対象となるDLL名の絶対パスが出力されます。ただし,検索対象のDLLが見つからなかった場合は,次の情報が出力されます。
-
環境変数CBLLDLL:パス指定のないDLL名
-
環境変数CBLLPROGDLL:呼び出し先プログラム名
-
(4) プログラム検索トレースの内容
-
日付/時刻を出力する。
-
トレース出力の契機を出力する。
PRE
環境変数CBLPRELOADで指定されたプレロードリストファイルに記述されたDLLの情報を出力する。
PROG
CALL文が実行されたプログラム名を5.に示す。
CALL
CALL文の処理であることを示す。3.がprogramの場合,呼び出すプログラム名を5.に示す。
-
処理内容の詳細を出力する。
open
ファイルのオープン処理であることを示す。
load
DLLのロード処理であることを示す。
program
呼び出し先プログラムの検索処理を開始したことを示す。
search
プログラムの検索処理であることを示す。
getaddr
プログラムのアドレス取得処理であることを示す。
-
処理の実行結果を出力する。
SUCCESS
処理が成功したことを示す。
WARNING
処理中にエラーが発生したことを示す。処理は継続する。
ERROR
処理中にエラーが発生したことを示す。処理は終了する。
NOTFOUND
処理を実行した結果,呼び出し先プログラムが見つからなかったことを示す。
FOUND
処理を実行した結果,呼び出し先プログラムが見つかり,プログラム検索処理が終了したことを示す。
-
処理の対象ファイルまたは対象プログラムを出力する。
INSIDE PROGRAM
呼び出しできる内側のプログラムに対する処理であることを示す。
CALLED PROGRAMS
呼び出し済みプログラムに対する処理であることを示す。
LINKED TO STATICALLY
静的にリンクされた最外側のプログラムに対する処理であることを示す。
ALREADY LOADED LIBRARY
ロード済みのDLLに対する処理であることを示す。
上記以外(ファイル名またはプログラム名)
ファイルまたはプログラムに対する処理であることを示す。
-
環境変数CBLPRELOADの指定がある場合は,プレロードリストファイルに記述されたDLLに対するロード結果を出力する。ロード失敗時は,エラー番号(n)と詳細メッセージ(xxxxx)を出力する。
環境変数CBLPRELOADの指定がない場合,環境変数CBLPRELOADの情報は出力しない。
-
呼び出しできる内側のプログラムの中から呼び出し先プログラムを検索した結果を出力する。この情報は,一意名指定のCALL文のときだけ出力する。
-
動的なリンクによってすでに呼び出しされたプログラムから呼び出し先プログラムを検索した結果を出力する。
-
すでにロードされているDLL中から呼び出し先プログラムを検索した結果を出力する。
-
未ロードのDLLから呼び出し先プログラムを検索した結果を出力する。
-
呼び出し先プログラムを含むDLLをロードした結果を出力する。
-
呼び出し先プログラムのアドレスを取得した結果を出力する。
-
DLLのロードに失敗した場合,エラー番号と詳細メッセージを出力する。