13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SENSYAdvent Calendar 2017

Day 19

問題検出をするためにXcodeのCode Diagnosticsを利用する。

Last updated at Posted at 2017-12-18

SENSY株式会社のnamcoです。
業務ではiOS APPの開発をしています。

今回は、xcodeのScheme - Diagonosticsを見直した時の内容を、備忘録として書き残しておこうと思

下記のような流れで。

  1. Address Sanitizer
  2. Thread Sanitizer
  3. Main Thread Checker
  4. Undefined Behaviour Sanitizer
  5. まとめ

Address Sanitizer

[Address Sanitizer]
(https://developer.apple.com/documentation/code_diagnostics/address_sanitizer)

  • 実行時にメモリ破損やその他のメモリエラーを検出するツール。
  • チェックを有効にしてコードを実行すると、CPUの速度が2〜5倍に低下し、メモリ使用量が2〜3倍に増加する。
  • 検証例: SwiftのAddress/Thread Sanitizer

Thread Sanitizer

[Thread Sanitizer]
(https://developer.apple.com/documentation/code_diagnostics/thread_sanitizer)

  • スレッドセーフになってないオブジェクトに、意図せず複数スレッドでアクセスしてしまった時に検知をして、警告を出してくれる。
  • Thread Sanitizerのチェックを有効にしてコードを実行すると、CPUが2〜20秒遅くなり、メモリ使用量が5〜10倍に増加する。
  • 64ビットMacOSおよび64ビットiOSおよびtvOSシミュレータ(watchOSはサポートされていません)でのみサポートされている。デバイスでアプリケーションを実行するときはTSanを使用できない。
  • 検証例: SwiftのAddress/Thread Sanitizer

Main Thread Checker

[Main Thread Checker]
(https://developer.apple.com/documentation/code_diagnostics/main_thread_checker)

  • Main Threadで呼ばれるべき処理が、Main Thread以外で呼ばれていないかを実行時にチェックしてくれる。
  • CPUのオーバーヘッドは1〜2%、プロセスの起動時間は0.1秒未満。
  • デフォルトで有効になっているが、問題の箇所でプログラムの実行を止めたい場合はPause on issuesにもチェックをつける
  • 検証例:iOS 11 Xcode 9で“だいぶまとも”に!新機能をまとめてみた

Undefined Behaviour Sanitizer

[Undefined Behaviour Sanitizer]
(https://developer.apple.com/documentation/code_diagnostics/undefined_behavior_sanitizer)

まとめ

  • Main Thread Checker以外は、どれを利用するにしても、パフェーマンスへの影響が大きいので、各種設定を有効にしたschemaを作っておき、デバッグしたい時のみ利用するのが良さそう。
  • 諸々の使い方をappleが動画で解説してくれている。年末年始に確認しよう。

    [Finding Bugs Using Xcode Runtime Tools]
    (https://developer.apple.com/videos/play/wwdc2017/406/)

下記参考にさせていただきました。ありがとうございます。

参考

SwiftのAddress/Thread Sanitizer
[Finding Bugs Using Xcode Runtime Tools]
(https://developer.apple.com/videos/play/wwdc2017/406/)
iOS 11 Xcode 9で“だいぶまとも”に!新機能をまとめてみた

以上です。

13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?