実行時診断 (runtime diagnostics)


以下の実行時診断およびログオプションは、スキームエディタで有効にできます。


実行時サニタイザオプション:

オプション説明
アドレス
サニタイザ
実行時にメモリの破損やその他のメモリエラーを検出します。メモリエラーは予期しない動作を引き起こす可能性があり、一貫して再現するのが難しい場合があります。詳細については、Address Sanitizer をご覧ください。
スレッド
サニタイザ
実行時にデータの競合を検出します。たとえば、複数のスレッドが同期せずに同じメモリにアクセスし、少なくとも 1 つのアクセスが書き込みである場合。詳細については、 Thread Sanitizer. をご覧ください。
未定義動作サニタイザ実行時に未定義の動作を検出します。たとえば、ゼロによる除算、不揃いのポインタからのメモリの読み込み、null ポインタの逆参照など、セマンティクスが指定されていない操作。詳細については、未定義の動作のサニタイザ をご覧ください。


訳注:以上 3 つの Address Sanitizer Thread Sanitizer.未定義の動作のサニタイザ、および以下の メインスレッドチェッカー は、リンク切れです。


注意:実行時サニタイザオプションを有効にすると、次回デバッグのためにアプリを実行するときに再コンパイルが必要になります。


実行時 API チェック:


オプション説明
メイン
スレッド
チェッカー
AppKit、UIKit、およびバックグラウンドスレッドでの他の API の無効な使用を検出します。詳細については、メインスレッドチェッカー をお読みください。


メモリ管理オプション:


オプション説明
Malloc
落書き
割り当てられたメモリを 0xAA で埋め、割り当て解除されたメモリを 0x55 で埋めます。
Malloc ガードエッジ大規模な割り当ての前後にガードページを追加します。
ガードマロックlibgmalloc を使用して、バッファオーバーランや解放後使用などの一般的なメモリの問題をキャッチします。
ゾンビオブジェクト割り当て解除されたオブジェクトを ゾンビ オブジェクトに置き換えます。ゾンビオブジェクトにメッセージを送信すると、実行時はエラーを記録してクラッシュします。バックトレースを見て、ゾンビ検出器をトリガーした一連の呼び出しを確認できます。
Malloc スタックメモリの割り当てと割り当て解除のスタックログを記録します。
リソース例外のメモリグラフ近く実装予定