以下の実行時診断およびログオプションは、スキームエディタで有効にできます。
実行時サニタイザオプション:
オプション | 説明 |
アドレス サニタイザ | 実行時にメモリの破損やその他のメモリエラーを検出します。メモリエラーは予期しない動作を引き起こす可能性があり、一貫して再現するのが難しい場合があります。詳細については、Address Sanitizer をご覧ください。 |
スレッド サニタイザ | 実行時にデータの競合を検出します。たとえば、複数のスレッドが同期せずに同じメモリにアクセスし、少なくとも 1 つのアクセスが書き込みである場合。詳細については、 Thread Sanitizer. をご覧ください。 |
未定義動作サニタイザ | 実行時に未定義の動作を検出します。たとえば、ゼロによる除算、不揃いのポインタからのメモリの読み込み、null ポインタの逆参照など、セマンティクスが指定されていない操作。詳細については、未定義の動作のサニタイザ をご覧ください。 |
注意:実行時サニタイザオプションを有効にすると、次回デバッグのためにアプリを実行するときに再コンパイルが必要になります。
実行時 API チェック:
オプション | 説明 |
メイン スレッド チェッカー | AppKit、UIKit、およびバックグラウンドスレッドでの他の API の無効な使用を検出します。詳細については、メインスレッドチェッカー をお読みください。 |
メモリ管理オプション:
オプション | 説明 |
Malloc 落書き | 割り当てられたメモリを 0xAA で埋め、割り当て解除されたメモリを 0x55 で埋めます。 |
Malloc ガードエッジ | 大規模な割り当ての前後にガードページを追加します。 |
ガードマロック | libgmalloc を使用して、バッファオーバーランや解放後使用などの一般的なメモリの問題をキャッチします。 |
ゾンビオブジェクト | 割り当て解除されたオブジェクトを ゾンビ オブジェクトに置き換えます。ゾンビオブジェクトにメッセージを送信すると、実行時はエラーを記録してクラッシュします。バックトレースを見て、ゾンビ検出器をトリガーした一連の呼び出しを確認できます。 |
Malloc スタック | メモリの割り当てと割り当て解除のスタックログを記録します。 |
リソース例外のメモリグラフ | 近く実装予定 |