xcode4でクラッシュログを簡単に見る

iPhoneアプリ開発をしているとたまに出会うEXC_BAD_ACCESS

アプリがクラッシュした際に原因を探るクラッシュログの表示方法をメモ。

xcode4からなのか、とても簡単にみれるようになっていた。

How to Show crash log on xcode4.

【手順】

1.iPhoneでテストしたいアプリを起動する。



2.いじり倒してクラッシュさせる(してはダメだけども)



3.iPhoneMacに接続してxcodeを起動。



4.xcodeのメニューから「window」 > 「organizer」でオーガナイザー起動



5.「organizer」 から「Devicesを選択」



6.「organizer」の左に表示される、
「◯◯のiPhone」を選択した後、「Device Logs」をクリックする。



7.クラッシュログのスキャンと生成が自動的に行われる。
進行状況は「organizer」下に表示される。

スキャン中..

シンボル解決中..




8.iPhoneを繋げたままアプリをクラッシュさせた後など、ログを再度生成するには、
「6」をもう一度行う。


次は何がクラッシュの原因なのか、クラッシュログを読んでみた。

クラッシュログには以下の情報が含まれる。

・クラッシュしたアプリとデバイス情報
・クラッシュの種類
・スレッドごとのスタックトレース情報


Last Exception Backtrace:という箇所は、
クラッシュ直前までのメソッド呼び出しの追跡情報がのってます。

バックトレース情報を追っていくと、
4番目にあたるUINibのクラスメソッド呼び出しの後に、、

4 UIKit 0x32db3747 -[UINib instantiateWithOwner:options:] + 1567


例外が発生している。

3 CoreFoundation 0x30ba57db +[NSException raise:format:] + 35


xibファイルが怪しいと思い、「show in finder」でプロジェクトファイルをみた所、

以前nibファイルのローカライズ対応を試していたファイルが残っていた。

余分なファイルを削除後、きちんと動くようになった。

.crashファイルの場所や、シンボル解決のコマンド等はクラッシュログに関して、
以下サイトがとても詳しく参考になりました。
http://bit.ly/AstH3e


作業中、ライブラリフォルダを表示しないと見られないファイルが多いので、
隠しファイル表示方法をしらない方は以下を参考にしてみて下さい。
Mac OS X Lionで隠しファイルを表示する



クラッシュログ全体の画像も参考までに。