Understanding and Analyzing iOS Application Crash Reports メモ

Understanding and Analyzing iOS Application Crash Reports メモ

アプリケーションがクラッシュし、"クラッシュレポートは"クラッシュの原因を理解するために非常に有用であるが作成されます。
このドキュメントでは、symbolicate理解し、クラッシュレポートを解釈する方法に関する重要な情報が含まれています。

はじめに
アプリケーションは、IOSデバイス上でクラッシュした場合、"クラッシュレポート"が作成され、デバイス上に格納されます。
クラッシュレポートは、各実行中のスレッドのための完全なスタックトレースを含む、ほとんどのケースでは、アプリケーション
が終了する条件を記述し、通常、アプリケーションの問題をデバッグするのに非常に便利です。
あなたがiOSの開発者であれば、あなたのアプリケーションを有するし、それらを修正しようとされてクラッシュしたかを理解す
るために、これらのクラッシュレポートを確認する必要があります。
低メモリレポートは、レポートのこのタイプにはスタックトレースが存在しないという点で他のクラッシュレポートとは異なります。
メモリ不足のクラッシュが発生すると、メモリ不足の警告に、メモリの使用パターンとの応答を調査する必要があります。
このドキュメントでは、あなたにあなたが有用見つけるかもしれないいくつかのメモリ管理の参照を指しています。
スタックトレースでクラッシュレポートには、それらを分析する前にsymbolicatedする必要があります。
Symoblicationは、人間が読める形式の関数名と行番号をメモリアドレスに置き換えられます。
あなたはXcodeのオーガナイザのウィンドウを介してデバイスからクラッシュログを取得した場合、それらは数秒後に自動的に
symbolicatedされます。
そうでなければ。クラッシュがXcodeのオーガナイザにインポートすることによって自分自身をファイルsymbolicateする必要があります。
詳細についてはSymbolicationを参照してください。
また、このドキュメントでは、例外コード、クラッシュの原因を識別するための別の有用な情報を語っています。

低メモリレポートについて
メモリ不足の状態が検出されたときに、IOSの仮想メモリシステムがメモリを解放するためのアプリケーションの連携に依存しています。
メモリ不足の通知が使用されているメモリの量を減らすことを望んで、メモリを解放する要求として実行中のすべてのアプリケーションやプロセス
に送信されます。
メモリ圧力が依然として存在している場合、システムがメモリ不足を緩和するために、バックグラウンド·プロセスを終了することができます。
十分なメモリが解放できる場合、アプリケーションは引き続き実行されず、クラッシュレポートが生成されません。
されていない場合は、アプリケーションの要求を満たすのに十分なメモリがないため、アプリケーションは、IOSによって終了され、メモリ不足のレポート
が生成され、デバイスに保存されます。
メモリ不足のレポートの形式は、アプリケーション·スレッド用のスタックトレースが存在しないという点で他のクラッシュレポートとは異なります。
各プロセスのメモリ使用量は、この記事の執筆時点で各4キロバイトいるメモリページの数で報告されています。
あなたは、メモリを解放するためにIOSが終了する任意のプロセスの名前の横に"(投棄)"が表示されます。
あなたのアプリケーション名の横にそれを見た場合、そのアプリケーションがあまりにも多くのメモリを使用するために終了しました確認します。
それ以外の場合は、クラッシュの原因はメモリ不足ではなかった。
詳細については、。クラッシュファイル(次のセクションで説明)を探します。
あなたは、メモリ不足のクラッシュを参照してくださいではなく、あなたのコードの一部が終了時に実行されていたのかを心配するときは、メモリ不足の
警告に、メモリの使用パターンおよび応答を調査する必要があります。
メモリ割り当ては、放棄されたメモリを避けるために割り当てインストゥルメントのマークのヒープ機能を使用する方法、メモリリークを発見するために
リーク音源を使用する方法のリストの詳細な手順をヘルプします。
メモリ使用量のパフォーマンスのガイドラインは、低メモリの通知と同様に効果的にメモリを使用するための多くのヒントに対応する適切な方法について
説明します。

Important
リークと割り当ての楽器は、グラフィックスメモリを追跡しません。
あなたのグラフィックスメモリの使用状況を確認するにはVMトラッカー楽器(楽器の割り当てテンプレートに含まれています)を使用してアプリケーションを実行する
必要があります。
VMトラッカーはデフォルトで無効になっています。
VMトラッカーを使用してアプリケーションをプロファイリングするには、手動でボタンを押し、楽器をクリックして"自動スナップショット"フラグをチェックしたり、
"今すぐスナップショット"を押します。

クラッシュレポートを分析する
メモリ不足のレポートとは異なり、ほとんどのクラッシュレポートは終了時の各スレッドのスタックトレースが含まれています。このセクションでは、
これらのレポートについて説明します。

Symbolication
クラッシュレポートの中で最も興味深い部分は、停止時の実行時にアプリケーションのスタックトレースです。
このトレースは、あなたがメソッドまたはシンボルとして知られている関数名を、与えられていないことを除いて、デバッガで実行を停止したときに表示されるものに似ています。
代わりに、あなたは、16進アドレスと実行可能コードを持っている - あなたのアプリケーションまたはシステムのフレームワークを - それらが参照する。
あなたはシンボルにこれらのアドレスをマッピングする必要があります。ログには、彼らが書き出されているシンボル情報が含まれていません。あなたはそれらを分析する前にログ
をsymbolicateする必要があります。
Symbolication - ソースコードのメソッドと行にスタック·トレース·アドレスを解決する - そのバイナリがビルドされたときに生成されたApp StoreとdSYMファイルにアップ
ロードされたアプリケーションのバイナリを必要とします。これは正確に一致しなければならない - それ以外の場合は、レポートは完全にsymbolicatedすることはできません。
それはあなたがそれぞれの。dSYMファイルを使用して(関係なく、その分布の詳細の)ユーザに配布するビルドを保つことが不可欠である。

Important あなたは完全にクラッシュレポートをsymbolicateできるようにするためにアプリケーションのバイナリと。dSYMファイルの両方を保持する必要があります。あなたは、
iTunes Connectにあなたが提出したすべてのアーカイブこれらのファイルを構築する必要があります。 。dSYMとアプリケーションバイナリは、特にごとにビルドに基づいて結ばれ、
さらには同じソースファイルからの以降のビルドは、他のビルドからのファイルと相互運用できません。あなたは"ビルドとアーカイブ"コマンドを使用していれば、自動的に適切な場所に配置されます
。そうでなければスポットライト(そのような自分のホームディレクトリなど)で任意の場所の検索は問題ありません。

Xcodeの"アーカイブ"コマンドは、維持が容易に一致するバイナリと。dSYMことができます。あなたが( "製品"メニューから "アーカイブ"を選択するか、
+コマンド+ B Shiftキーを押す)"アーカイブ"コマンドを使用すると、Xcodeは、一緒にアプリケーションのバイナリと。dSYM含むシンボル情報を収集し、場所に保存しますあなたの
ホームフォルダにあります。あなたは、"アーカイブ"セクションの下にXcodeのオーガナイザで、アーカイブのすべてのアプリケーションを見つけることができます。クラッシュレポート
をsymbolicatingときにXcodeが自動的にアーカイブされたアプリケーションを検索し、あなたがアーカイブされたアプリケーションと。dSYMあなたが解放するものと一致していることを
確認ConnectをiTunesに直接アーカイブアプリケーションを提出することができます。
Xcodeは自動的にクラッシュレポートを生成する。dSYMとアプリケーションのバイナリを持っている場合には、遭遇するすべてのクラッシュレポートをsymbolicateます。クラッシュレポート、
マッチングバイナリと、その。dSYMファイルを与えられた、あなたがsymbolicationのために行うために必要なすべては、Xcodeのオーガナイザにクラッシュレポートを追加することです。
Xcodeのオーガナイザを開き、サイドバーの上に"LIBRARY"の "デバイス·ログ"を選択し、"デバイス"タブを選択し、"インポート"ボタンをクリックします。クラッシュファイルを選択します。
それが終わったら、Xcodeは自動的にクラッシュレポートをsymbolicateと結果が表示されます。

例外コード
クラッシュログに16行について、あなたは、クラッシュの性質に関する詳細な情報を与えることができるプロセッサ固有のコードが1つまたは複数の16進値があとに続いたテキストで始まる
行が表示されます。アプリケーションが原因でプログラミング·エラー(たとえば、不正なメモリアクセス、例外など)にクラッシュした場合は、これらのコードから伝えることができる、
またはアプリケーションが、例えば他のいくつかの理由で終了した場合:
・例外コード0x8badf00dは、ウォッチドッグタイムアウトが発生したため、アプリケーションがIOSによって終了されたことを示しています。アプリケーションは、起動、終了、またはシステム
イベントに応答するために時間がかかりすぎました。このいずれかの一般的な原因は、メインスレッド上で同期ネットワーキングを行っています。
・例外コード0xbad22222は、それがあまりにも頻繁に再開するためのVoIPアプリケーションがIOSによって終了されたことを示しています。
・例外コード0xdead10ccはバックグラウンドで動いている間はシステム·リソース(アドレス帳データベースなど)へ開催されたので、applicaitonがIOSによって終了されたことを示します。
・例外コード0xdeadfa11は、アプリケーションが力がユーザーによって終了されていることが示された。表示され、 "電源オフスライド"は、[ホームボタンを押したままになるまで、ユーザーが
最初にオン/オフボタンを押し保持しているときに力が発生し終了します。それは、アプリケーションが応答しなくなっているため、ユーザーはこれをやっていることを前提とするのが妥当だが、
それは保証されません - 強制終了は、任意のアプリケーション上で動作します。

Note マルチタスキングトレイから削除することによって中断アプリを終了すると、クラッシュログを生成しません。アプリはサスペンドしたら、いつでもIOSが終了の対象となり、何のクラッシュ
ログが生成されませんので。
スポンサーサイト
姉妹サイトだよ! よかったらみてね!

コメントの投稿

非公開コメント

twitter
twitter アカウント @drum_kuroneko 気軽にフォローしてください。
誰でも簡単に開発ができます!!
人気ナンバー1
自己紹介

yuutyan0205

プロガー:yuutyan0205
きままな自由人です。

たまにプログラミングを行っています。

仕事ください・・・

開発者アプリ一覧 気になったらダウンロードしてください。
開発環境おすすめ
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
最新記事
月別アーカイブ
カテゴリ
アクセスランキング
[ジャンルランキング]
コンピュータ
818位
アクセスランキングを見る>>

[サブジャンルランキング]
マック
49位
アクセスランキングを見る>>
訪問者数
現在の訪問者数
現在の閲覧者数:
全記事表示リンク

全ての記事を表示する

相互リンク希望の方とご質問ある方ご連絡ください。

名前:
メール:
件名:
本文: