0

Symbolicate iOS Crashのクラッシュレポートを生成してクラッシュログを表示したいので、コードを使用してクラッシュレポートを取得したいのですが、現時点では次の情報しか取得できません。

* -[__ NSArrayM objectAtIndex:]:境界を超えたインデックス121 [0 .. 23]

 Application received signal SIGSEGV

( 

  0   CoreFoundation                      0x3120e2bb  + 186
  1   libobjc.A.dylib                     0x38f2b97f objc_exception_throw + 30
  2   CoreFoundation                      0x3120e1c5  + 0
  3   myshine                             0x001f9f51 myshine + 1503057
  4   libsystem_c.dylib                   0x393a9e8b _sigtramp + 34
  5   myshine                             0x000ac985 myshine + 137605
  6   myshine                             0x000ac35d myshine + 136029
  7   CoreFoundation                      0x311ab7cf  + 74

)

 not have 

/ 1: Process Information
  Incident Identifier: 30E46451-53FD-4965-896A-457FC11AD05F
  CrashReporter Key:   5a56599d836c4f867f6eec76afee451bf9ae5f31
  Hardware Model:      iPhone4,1
  Process:         Rage Masters [4155]
  Path:            /var/mobile/Applications/A5635B22-F5EF-4CEB-94B6-FE158D885014/Rage      Masters.app/Rage Masters
  Identifier:      Rage Masters
  Version:         ??? (???)
  Code Type:       ARM (Native)
  Parent Process:  launchd [1]

 / / 2: Basic Information
Date/Time:       2012-10-17 21:39:06.967 -0400
OS Version:      iOS 6.0 (10A403)
Report Version:  104

// 3: Exception
Exception Type:  00000020
Exception Codes: 0x000000008badf00d
Highlighted Thread:  0

同じレポートを取得したい

4

3 に答える 3

10

それで、あなたはあなたがレポートを手に入れてそれらを象徴することができるようにあなた自身のクラッシュレポーターを書きたいですか?

クラッシュレポートの作成は非常に困難です。オープンソースライブラリPLCrashReporterの開発者による次の2つの記事を参照して、何が関係しているかを理解してください。http: //landonf.bikemonkey.org/code/objc/Reliable_Crash_Reporting.20110912.htmlおよびhttp ://landonf.bikemonkey.org/code/crashreporting/Reliable_Crash_Reporting_1.1.20130119.html

要するに:

  • すべてのコードは非同期セーフである必要があります。つまり、Objective-Cコードは使用できません。ほとんどのCメソッドも非同期セーフではありません。
  • クラッシュが発生すると、(基本的に)新しいメモリを割り当てることはできません。

あなたが尋ねているすべての詳細と、そのようなレポーターを書くようにまだ求められていないものは、答えに収まるよりも多くの方法を書く必要があります。

自分で書いてはいけません。すぐに使えるソリューションはたくさんあります。一部はオープンソースであり、上記のルールに対して安全であるかどうかを検証できます。一部はクローズドソースであり、簡単に検証できません(上記の記事で詳細を説明しています)。

私は1つのオープンソースと1つの商用ソリューションの開発者であるため、偏見があるため、さまざまなソリューションについては推奨しません。上記のリンク先の記事では、利用可能なソリューションのいくつかを分析しています。

だからここにいくつかあります。

オープンソース:

  • PLCrashReporter:2009年以降、何千ものアプリで使用されています。安全で確実に、記号化できる標準形式のクラッシュレポートを作成します。
  • KSCrash:かなり新しい。標準形式のクラッシュレポートを作成します。さまざまなサーバーソリューションに接続できます。
  • QuincyKit:PLCrashReporterに基づくクライアントSDKおよびPHPベースのサーバーコンポーネント。PLCrashReporterの統合が容易になり、サーバーコンポーネントがレポートを収集し、シンボル化されたらグループ化します。シンボル化は、実際のシンボル化を行うために独自のMacを使用して自動化できます。(免責事項:私はこれの開発者です)

ホスト型/商用ソリューション:

  • Bugsense:無料および有料のプラン。内部でPLCrashReporterを使用します。SDKの残りの部分はクローズドソースのようです。サーバー側の記号。
  • BugSnag:無料および有料のプラン。オープンソースSDK。内部でKSCrashを使用します。
  • Crashlytics:無料。クローズドソース。内部でPLCrashReporterを使用しましたが、現在は独自の実装を使用しています。サーバー側の記号。
  • Crittercism:無料および有料のプラン。内部でPLCrashReporterを使用します。SDKの残りの部分はクローズドソースのようです。サーバー側の記号。
  • HockeyApp:有料プラン、1か月の試用版。内部でPLCrashReporterを使用し、すべてのSDKはオープンソースです。標準形式のクラッシュレポートを作成します。サーバー側の記号。(免責事項:私はこれの共同創設者および開発者の1人です)
  • セントリー:有料、かなり新しい、オープンソース(SDKとサーバー)。内部でKSCrashを使用します。
  • Testflight:無料のクローズドソース。サーバー側の記号。

確かに、私が忘れていたものが他にもいくつかあります。

于 2013-03-20T12:20:31.100 に答える
1

Xcodeターゲットでは、

'DebuginformationFormate'をDWARFに設定します。

デバッグシンボルの生成:はい

コピー中にデバッグシンボルを削除する:はい

詳細については、画像を参照してください。最終アップロードでは、必ず同じものに戻してください。これはテスト用です。 ここに画像の説明を入力してください

于 2013-03-20T11:00:45.747 に答える
1

このためには、ディストリビューションビルドの作成時に生成されたdYSMファイルが必要です。

以下のリンクはあなたの助けになるかもしれません。

iPhoneアプリのクラッシュレポートを象徴する

于 2013-03-20T11:01:02.657 に答える