Instrumentsボトルネック調査テクニック

どうも、吉村です。

今回は、ある厄介なバグを解決するために用いたInstrumentsテクニックについて書きます。
今回の厄介なバグとは、
・30分ほど動かしているとパフォーマンスが低下する
・ごくごくわずかずつメモリが増えている?
といったものです。

このバグの面倒なところは、
「1回バグが直ったかどうかを確認するのに30分ほど時間がかかってしまう」
という点です。
従って、怪しい所をコメントアウトして場所を絞り込む手法には限界があるのです。
逐一テストしていたら日が暮れてしまいます。

そこで颯爽と登場するのがInstrumentsのプロセスアタッチ機能です。
これはXcodeメニュー->Open Developer Tool-> InstrumentsでまずInstrumentsを立ち上げ、
使いたい機能を選択(今回はTimeProfiler)し、
Recordボタンの横の、
All Processes -> Attach to Process -> デバッグしたい実行中のアプリケーション と選択します。

Screen Shot 2013-08-07 at 18.33.07

そしてこの状態でRecordボタンを押すと、
自由なタイミングでアタッチ->計測を行えるのです。

これを利用して、今回は、

1、アプリケーション起動直後のタイムプロファイリング
2、30分後のパフォーマンス低下後のタイムプロファイリング

を計測し、比較しました。
すると、ある関数が
「1では時間が全然かかっていないのに、2ではすごく時間がかかっている」
のを簡単に突き止めることができました!

まったく、日々Instrumentsの強力さに驚かされるばかりです。
皆さんも是非活用してみてはいかがでしょうか。

 

〜デバッグ? ああ、簡単だよ、Instrumentsを使えば。そう、macならね〜