TRACEBACKQQ

実行時サブルーチン:トレースバック情報を提供します。TRACEBACKQQ () を呼び出した時点で現れているプログラムのコール・スタックを表示するスタック・トレースを生成するために Visual Fortran 実行時ライブラリーのトレースバック機能を使用します。

モジュールUSE DFLIB

形式

CALL TRACEBACKQQ ([string] [, user_exit_code] [, status] [, eptr])

string
(省略可能,入力) CHARACTER*(*)。トレースバック出力の前に置かれるメッセージ文字列。これには 80 文字 (1 行) より少ない文字列を指定することをお勧めします。これは,出力をよりよく見せるためです。しかしながら,この上限は制限でも,強制するものでもありません。文字列は指定された通りに出力されます。書式化や解釈は行われません。

この引数を省略すると,ヘッダ・メッセージ文字列は生成されません。

user_exit_code
(省略可能,入力) INTEGER(4)。終了コード。2 つの値が既定されています。

これら以外の値を指定すると,アプリケーションが実行を中止し,指定した値がオペレーティング・システムに返されます。

status
(省略可能,入力) INTEGER(4)。状態値。指定すると,実行時システムはトレースバック処理が成功したことを示す状態値を呼び出し側に返します。基本設定は,状態を戻しません。

返される状態値はコール・スタックのトレースの「試み」が成功裏に完了したことを示すのみで,有用な結果が生成されたという保証がないことに注意してください。

可能性のある返される値のシンボル定義を得るには,プログラムにファイル iosdef.for をインクルードします。FOR$IOS_SUCCESS (0) の返し値は成功を示しています。

eptr
(省略可能,入力) クレイ・ポインタ。ユーザー定義例外フィルタから呼び出される場合,これが必要になります。省略すると,基本設定のヌルになります。

例外が発生した後のスタックをトレースするには,実行時サポートはオペレーティング・システムによってフィルタに提供される例外情報を参照する必要があります。

eptr 引数は,T_EXCEPTION_POINTERS へのポインタです。これは WIN32 API GetExceptionInformation() によって返されます。このポインタは,通常 C Try/Except フィルタ関数に渡されます。T_EXCEPTION_POINTERS への有効なポインタを渡さない場合,この引数はヌルでなければなりません。詳細は,「TRACEBACKQQ を使ったトレースバック情報の入手」を参照してください。

TRACEBACKQQ ルーチンは,アプリケーションにスタック・トレースを初期化する標準的な方法を提供します。これは,アプリケーションで検出されたエラーの報告,デバッグなどに利用することができます。これは,Visual Fortran 実行時ライブラリーのスタック・トレース・サポートを使用し,処理できないエラーや例外に対して実行時ライブラリーが生成する同じ出力を生成します。

実行時システムによって含まれるエラー・メッセージ文字列は,通常,ユーザー定義メッセージ文字列で置き換えられたり,指定されていなければ省略されます。トレースバックが実行時システムによって内部的に初期化された時点で,トレースバック出力は,アプリケーション形式にあったターゲットに直接行われます。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

TRACEBACKQQ を使ったトレースバック情報の入手実行時メッセージの表示と書式トレースバック情報の使用

以下の例を考えます。

	CALL TRACEBACKQQ( )

この例は,ヘッダ・メッセージなしのトレースバック報告を生成し,呼び出しサイトがどこであっても,実行を中止します。

以下に他の例を示します。

	CALL TRACEBACKQQ("My application message string")

この例は,ユーザー定義文字列をヘッダとしたトレースバック報告を生成し,実行を中止します。

以下に他の例を示します。

	CALL TRACEBACKQQ(STRING="Bad value for TEMP",USER_EXIT_CODE=123)

この例は,ユーザー定義文字列をヘッダとしたトレースバック報告を生成し,実行を中止し,状態コード 132 をオペレーティング・システムに返します。

以下に他の例を示します。

	...
	INTEGER(4) RTN_STS
	INCLUDE 'IOSDEF.FOR'
	...
	CALL TRACEBACKQQ(USER_EXIT_CODE=-1,STATUS=RTN_STS)
	IF (RTN_STS .EQ. FOR$IOS_SUCCESS) THEN
	  PRINT *,'TRACEBACK WAS SUCCESSFUL'
	END IF
	...

この例は,ヘッダ文字列なしのトレースバック報告を生成し,アプリケーションの実行を継続するために呼び出し側に戻ります。トレースバック・プロセスが成功すると,状態は変数 RTN_STS に返されます。

クレイ・ポインタの使い方を示した例を含む様々な例は,「TRACEBACKQQ を使ったトレースバック情報の入手」を参照してください。