Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

xcode address sanitizerでヒープ破壊箇所を検出する

xcode address sanitizerでヒープ破壊箇所を検出してみます。

- (void)viewDidLoad {
    [super viewDidLoad];

    uint8_t* a = malloc(16);
    memset(a, 0, 17);
}

普通に実行してみると、

f:id:pebble8888:20181220201839p:plain

どこで破壊されているのか分かりませんね。 これをソースの行レベルで検出するには、address sanitizer を使います。
以下の画面の、「Address Sanitizer」と「Detect use of stack after return」にチェックをつけておきます。

f:id:pebble8888:20181220202130p:plain

f:id:pebble8888:20181220202219p:plain

破壊箇所がソースの行が出てきました。