安全性

提供:RAD Studio

C++ コンパイラ への移動


プロジェクト > オプション... > ビルド > C++ コンパイラ > 安全性

このダイアログ ボックスを使用すると、ソース コードおよびアプリケーションの、安全性と品質を有効化および向上させ、C++ コンパイラの安全性の設定を行うことができます。

オプション 説明

[ターゲット]、[適用...]、[保存...]

ターゲット オプション」を参照してください。

共通項目

[プロジェクト オプション]ページの共通項目」を参照してください。

安全性のオプション

サニタイザは、アプリケーションにランタイム チェックを追加し、これは、コードの正確性と安全性の向上のために使用することができます。

安全性のオプション 説明 コンパイラ スイッチ
BCC32 BCC32C BCC64 BCC64X

アドレス サニタイザ

解放後の使用、二重解放、境界外へのアクセスなど、さまざまなメモリ エラーを検出します。
デフォルト = False

注意:
セクション「アドレス サニタイザの利用」を参照してください。

プラットフォーム非サポート

プラットフォーム非サポート

プラットフォーム非サポート

未定義動作サニタイザ

サイレント失敗や予期しない動作を伴う様々なオペレーションを検出します(C++ 標準では定義されていません)。例としては、符号付き整数のオーバーフロー、データ型に対して広すぎるビットシフト、不正なポインタの逆参照などがあげられます。
デフォルト = False

プラットフォーム非サポート

プラットフォーム非サポート

プラットフォーム非サポート

メモ:
すべてのアドレス サニタイザが、デバッグ ビルドでのみ有効にされなければなりません。サニタイザ対応アプリをエンド ユーザーに配布しない技術的な理由はなく、顧客の問題のデバッグに役立つことも考えられます(特に asan 向けなど、必要な再配布可能ファイルを確実に同梱してください)。しかしながら、デフォルトでは、ユーザーに配布される「リリース モード」のアプリには、サニタイザを含めるべきではありません。これらは、ランタイム デバッグ ツールです。

アドレス サニタイザの利用

アプリケーションをアドレス サニタイザが有効な状態でビルドする際には、IDE の外部でアプリケーションを実行しなければなりません。AV が表示されないよう、コマンド プロンプトからの実行を極力推奨します。

アプリケーションを IDE で実行している場合、デバッガは、アドレス サニタイザが実行した作業に関連するアクセス違反をとらえます。プロセスは、サニタイザがエラーを見つけるまで実行され、検出されるとコンソールに出力し、終了します(これらを無視して続行しても問題ありませんが、エラーが発生しているように誤解を招く可能性があります)。コマンド ウィンドウからの実行では、このテキストは画面に表示されます。

デフォルトでは、UI アプリ(VCL や FMX)には、コンソール、特に標準エラー出力がありません。このため、ユーザーがアプリを次のように直接実行した場合:

> myapp.exe

エラーは返されず、代わりにアプリが終了します。これを解決するには、アプリをコンソール サブシステムを使用するよう変更するか、出力をログ ファイルへパイプします(これにより、stderr が生成されます)。次のようになります:

myapp 2> asanlog.txt.

または

myapp > asanlog.txt 2>&1

上記は、stderrstdout の両方をログ ファイルにリダイレクトしています。

関連項目