安全性
C++ コンパイラ への移動
プロジェクト > オプション... > ビルド > C++ コンパイラ > 安全性
このダイアログ ボックスを使用すると、ソース コードおよびアプリケーションの、安全性と品質を有効化および向上させ、C++ コンパイラの安全性の設定を行うことができます。
| オプション | 説明 |
|---|---|
|
[ターゲット]、[適用...]、[保存...] |
「ターゲット オプション」を参照してください。 |
|
共通項目 |
「[プロジェクト オプション]ページの共通項目」を参照してください。 |
安全性のオプション
サニタイザは、アプリケーションにランタイム チェックを追加し、これは、コードの正確性と安全性の向上のために使用することができます。
すべてのアドレス サニタイザが、デバッグ ビルドでのみ有効にされなければなりません。サニタイザ対応アプリをエンド ユーザーに配布しない技術的な理由はなく、顧客の問題のデバッグに役立つことも考えられます(特に asan 向けなど、必要な再配布可能ファイルを確実に同梱してください)。しかしながら、デフォルトでは、ユーザーに配布される「リリース モード」のアプリには、サニタイザを含めるべきではありません。これらは、ランタイム デバッグ ツールです。
アドレス サニタイザの利用
アプリケーションをアドレス サニタイザが有効な状態でビルドする際には、IDE の外部でアプリケーションを実行しなければなりません。AV が表示されないよう、コマンド プロンプトからの実行を極力推奨します。
アプリケーションを IDE で実行している場合、デバッガは、アドレス サニタイザが実行した作業に関連するアクセス違反をとらえます。プロセスは、サニタイザがエラーを見つけるまで実行され、検出されるとコンソールに出力し、終了します(これらを無視して続行しても問題ありませんが、エラーが発生しているように誤解を招く可能性があります)。コマンド ウィンドウからの実行では、このテキストは画面に表示されます。
デフォルトでは、UI アプリ(VCL や FMX)には、コンソール、特に標準エラー出力がありません。このため、ユーザーがアプリを次のように直接実行した場合:
> myapp.exe
エラーは返されず、代わりにアプリが終了します。これを解決するには、アプリをコンソール サブシステムを使用するよう変更するか、出力をログ ファイルへパイプします(これにより、stderr が生成されます)。次のようになります:
myapp 2> asanlog.txt.
または
myapp > asanlog.txt 2>&1
上記は、stderr と stdout の両方をログ ファイルにリダイレクトしています。