バックトレースをアプリで取ってデバッグする

 バックトレースをアプリで取ってデバッグする

MOSA Tech Meeting (MTM) 2017 / 04 / 27 で発表したスライドです。バックトレースをアプリで取ってログに出力し、複雑なケースのデバッグにも対応できたことについての発表です。

1b96ac98c7693e0a57268d5fdd0ad437?s=128

Akira Hayashi

April 27, 2017
Tweet

Transcript

  1. 2.

    自己紹介 • 林 晃 • アールケー開発 代表 • NPO法人MOSA 理事

    • Twitter : @studiork • Web : http://www.rk-k.com/ • macOS, iOSアプリ開発、技術書執筆
  2. 5.

    アプリでバックトレースを取る // C #include <execinfo.h> int backtrace(void** array, int size);

    char** backtrace_symbols(void* const* array, int size); // Foundation (Swift and Objective-C) // NSThread class @property(class, readonly, copy) NSArray<NSString *> callStackSymbols
  3. 10.

    ケーススタディ DEMOのまとめ • 次の情報を1イベント1行で出力 • インスタンスのアドレス (0X1123BA460 など) • イベントの種類(A

    OR D, A: ALLOCATE, D: DEALLOCATE) • バックトレース (改行を<BR>) • 解析ツールでAとDのペアを処理をして、Aのみになっているものを抽出 • →メモリリーク • 抽出されたもののバックトレースから問題箇所を特定