LoginSignup
18
17

More than 5 years have passed since last update.

Address Sanitizerでメモリ不正アクセスを検知する

Posted at

メモリの不正アクセスによる不具合は再現率が低かったりしてデバッグが難しかったりしますが、XCode7で追加されたAddress Sanitizerを使うとXCodeが検知してくれるよ、という機能です。

こちらを参考にしました。

Address Sanitizerを有効にする

あからさまに不正アクセスするサンプルを用意しましょう。

- (void)viewDidLoad {
    [super viewDidLoad];

    char *buffer = malloc(80);
    buffer[80] = 'Y';
    free(buffer);
}

このまま実行しても何事もなく動いちゃったりします。
Address Sanitizerを有効にしてみましょう。

screen1.png

ここからEdit Schemeを選択します。

screen2.png

"Enable Address Sanitizer"をチェックします。
この状態で実行してみましょう。

screen3.png

はい、怒られました。
開発中は有効にしておくと良いかもしれません。

ただし、この機能が有効なのはObjective-CなどC系の言語のみです。
Swiftをお使いの場合は意味がないのでOFFのままで良いでしょう。

18
17
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
18
17