インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス
ポインターチェッカーは、OS X* システムではサポートされていません。
ポインターチェッカーには、エラーのレポート方法を制御できる __chkp_report_control() ライブラリー関数と __chkp_report_option_t 列挙子が含まれています。 関数と列挙子はヘッダーファイル chkp.h で宣言されています。
レポート制御列挙子には、次のいずれかの値を指定します。
列挙値 | 動作 |
---|---|
__CHKP_REPORT_NONE |
何もしません。 |
__CHKP_REPORT_BPT |
ブレークポイント割り込みを実行します。この値を指定すると、ポインターチェッカーは範囲外エラーのブレークポイントを出力します。 デバッガーを使用している場合、デバッガーはブレークポイントで停止するため、エラーが発生した場所を特定できます。 次に、デバッガーの機能を使用して、エラーの原因を特定します。 |
__CHKP_REPORT_LOG |
エラーを記録して続行します。コンパイラーは、範囲外のポインターを見つけるとレポートします。 |
__CHKP_REPORT_TERM |
エラーを記録し、プログラムを終了します。コンパイラーは最初の範囲違反のみレポートして、終了します。 |
__CHKP_REPORT_CALLBACK |
ユーザー定義関数を呼び出します。コンパイラーはユーザー定義関数を呼び出して範囲エラーを処理します。 |
__CHKP_REPORT_TRACEBACK _BPT |
範囲外エラーが発生した命令のソースファイルと行番号を含むトレースバックを出力し、ブレークポイント割り込みを実行します。 注ルーチン名を含むより詳細なトレースバック情報を取得するには、traceback コンパイラー・オプションを指定します。 |
__CHKP_REPORT_TRACE_LOG |
エラーを記録して続行します。ログには、範囲外エラーごとのトレースバック情報が含まれます。 これはデフォルトのレポートモードです。 注ルーチン名を含むより詳細なトレースバック情報を取得するには、traceback コンパイラー・オプションを指定します。 |
__CHKP_REPORT_TRACE_TERM |
エラーを記録して終了します。ログには、範囲外エラーごとのトレースバック情報が含まれます。 最初の範囲エラーのみレポートされます。 注ルーチン名を含むより詳細なトレースバック情報を取得するには、traceback コンパイラー・オプションを指定します。 |
__CHKP_REPORT_TRACE_CALLBACK |
エラーを記録してユーザー定義ルーチンを呼び出します。ログには、範囲外エラーごとのトレースバック情報が含まれます。 注ルーチン名を含むより詳細なトレースバック情報を取得するには、traceback コンパイラー・オプションを指定します。 |
__CHKP_REPORT_OOB_STATS |
範囲違反の統計を出力します。現在、これは範囲外エラーのカウントです。 |
__CHKP_REPORT_USE_ENV_VAR |
環境変数 INTEL_CHKP_REPORT_MODE を使用してレポートモードを指定します。 環境変数が設定されていない場合は、デフォルトのレポートモードが使用されます。 |
レポートモードの変更
レポートモードをデフォルトの __CHKP_REPORT_TRACE_LOG から変更するには、次の操作を行います。
プログラムのソースに chkp.h をインクルードします。
いずれかの enum 値を指定して、レポート制御ルーチン __chkp_report_control() の呼び出しを (ポインター参照が行われる前に) 追加します。
例えば、すべての範囲エラーをレポートするには、次のように指定します。
__chkp_report_control(__CHKP_REPORT_LOG, 0);
上記では、ルーチンの最初の引数は enum 値で、2 番目の引数は 0 です (2 番目の引数にユーザー定義コールバック・ルーチンの名前を指定する __CHKP_REPORT_CALLBACK enum 値を除く)。
環境変数 INTEL_CHKP_REPORT_MODE を使用してレポートモードを変更することもできます。 この方法では、コードを再コンパイルしなくてもレポートモードを変更できます。 環境変数を使用するには、次の操作を行います。
プログラムのソースに chkp.h をインクルードします。
__CHKP_REPORT_USE_ENV_VAR を指定して、レポート制御ルーチン __chkp_report_control() の呼び出しを (ポインター参照が行われる前に) 追加します。
INTEL_CHKP_REPORT_MODE 環境変数を任意のレポートモードに設定します。 次に例を示します。
export INTEL_CHKP_REPORT_MODE=__CHKP_REPORT_OOB_STATS
INTEL_CHKP_REPORT_MODE 環境変数は、レポートモードが __CHKP_REPORT_USE_ENV_VAR に設定され、__chkp_report_control が呼び出される場合のみ有効です。 それ以外の場合は無視されます。
レポートモードを __CHKP_REPORT_USE_ENV_VAR に設定しても、INTEL_CHKP_REPORT_MODE 環境変数が設定されていない場合は、デフォルトのレポートモード (__CHKP_REPORT_TRACE_LOG) が使用されます。