2

2 日前、私の iPhone ゲーム ベータ テスターの 1 人が、ゲームプレイの非常に特定のポイントでクラッシュに遭遇しました。HockeyApp にはクラッシュ レポートは表示されませんでした (同じビルドの他のレポートを見たことがあります)。

昨夜、私もクラッシュを経験しました。残念ながら、デバッガーに接続されていませんでした。コンピューターに戻ってデバイスを接続しましたが、新しいクラッシュ ログは見つかりませんでした。私のデバイスは iOS8 ベータ版であり、XCode5 と XCode6 の両方を使用してクラッシュ ログを検索しようとしたことに注意してください。

このクラッシュは再現が非常に困難です。合計 30 時間以上のゲームプレイで、この 3 回しか発生していません。これはメモリの問題ではありません。クラッシュはゲームプレイの非常に特定の時点で発生し、アプリを再起動すると、別の非常に特定の症状が発生します...デバッグするほど具体的ではありません;)

以前、HockeyApp などがクラッシュ ログをキャッチする方法について読んだことがありますが、専門知識が不足していることを認めざるを得ません。このようにログが失われる原因は何ですか? HockeyApp は何らかの方法でそれを「消費」しましたか、それともまったく作成されませんでしたか?

さらに重要なのは、問題を追跡するにはどうすればよいですか?

4

1 に答える 1

8

HockeyApp のアンドレアスです。

いくつかの一般的な発言から始めましょう。

  1. クラッシュが発生した場合、または iOS がアプリを強制終了した場合 (技術的にはクラッシュではありません)、iOS は常にクラッシュ レポートをデバイスに書き込みます。限られた量のレポートのみを保存し、代わりにコンソールでのみレポートを印刷します。

  2. サードパーティのフレームワークはクラッシュを「消費」できないため、iOS はレポートを生成できません。アプリ内の複数のサードパーティ フレームワークは未処理の例外を検出できますが、シグナルによってトリガーされたクラッシュを検出できるフレームワークは 1 つだけです。

  3. デフォルト設定の HockeyApp SDK は、スタック オーバーフローなどによるクラッシュを検出できません。これは Mach Exceptions を有効にすることで有効にできます。http://hockeyapp.net/help/sdk/ios/3.5.6/Classes/BITCrashManager.html#//api/name/enableMachExceptionHandlerを参照

  4. HockeyApp SDK には、iOS によるアプリのキルの種類を検出するための実験的なサポートがあります。これも個別に有効化する必要があります。https://github.com/bitstadium/HockeySDK-iOS/blob/develop/Classes/BITCrashManager.h#L224を参照してください。

iOS のクラッシュ レポートがなければ、HockeyApp がクラッシュをレポートできなかった理由はわかりません。iOS がデバイスにクラッシュ レポートを表示しないという私の推測は、既にデバイスにあまりにも多くのクラッシュ レポートがあり、同期が無効になっているということです。

  1. デバイスを Xcode に接続する
  2. デバイスを選択し、もう一度デバイスのクラッシュ レポートを確認します。
  3. 新しいクラッシュをシミュレートする
  4. それがデバイスに保存されるかどうかをもう一度確認してください。
  5. そこに何かがある場合は、コンソールログを確認してください。
  6. 想定が正しい場合は、デバイスから古いクラッシュ レポートを削除して、新しいレポート用のスペースを確保します。
  7. そのクラッシュのレポートを入手したら、それを取得してサポート経由でご連絡ください。分析のお手伝いをさせていただきます。
于 2014-08-22T13:50:31.183 に答える