アプリで問題が起こったときの状況を把握する
Chapter 13 の「デバッグで実装上の不備を見つける」では、デバッグの開始方法や、ブレークポイントやステップ実行の詳しい使い方、実行状況の把握の仕方について説明しました。そこで説明した事柄について、ここで補足します。
Xcode がインストールされていないコンピュータでクラッシュログを取得する
アプリがクラッシュしたときに、その状況が記されたクラッシュログが iOS デバイスに記録されることがあります。
クラッシュログを Xcode のデバイスオーガナイザーで取得する方法はXcode 5 徹底解説 for iOS/OS Xの13.7.1 アプリが強制終了した理由が記録されているクラッシュログを確認する
で紹介しました。
Xcode がインストールされていない Mac や Windows からでも、iOS デバイスを iTunes で同期していれば、クラッシュログを取得できます。
クラッシュログの保存場所
iOS デバイスのクラッシュログは、iTunes で同期を取ると、次のフォルダーに転送されます。
コンピュータの OS | クラッシュログの保存場所 |
---|---|
OS X 10.9 | ~/ |
Windows 8 | %USERPROFILE%¥ |
クラッシュログは、それが記録された iOS デバイス名でフォルダー分けされて保存されています。
ここに保存されている *.crash ファイルがクラッシュログファイルになります。ファイル名にはアプリの内部名と日付が含まれているので、それを元に目的のログを探します。そして、これをデバイスオーガナイザーにドロップすることでも取り込ませることが可能です。
クラッシュログの拡張子が "ips" の場合
クラッシュログがips
という拡張子で保存されている場合もあります。
このときは、ファイルの拡張子をcrash
に書き換えることで、デバイスオーガナイザーに取り込むことが可能になります。
なお、これらのクラッシュログは内容に少し違いがあって、拡張子がips
のクラッシュログの場合は、ログの最初に
JSON のような形式で、アプリ名や OS バージョンなど、そのログがどのような状況下で取得されたかを示す情報が付加されています。
crash
で記録されていたのですけど、このデバイスの iOS 7.1.1 にアップデートしたところ、拡張子がips
で記録されるようになりました。iOS
のバージョンによって記録のされ方が変わったのかもしれません。