読めるようにクラッシュログを?の探し方のアプリがクラッシュシステムですか?何とEXC_CRASH(SIGABRT)?

StackOverflow https://stackoverflow.com/questions/2322198

質問

私のクラッシュログはお客様から図なぜ私のアプリクラッシュ女ます。

ここで一部の情報からクラッシュログ:

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0

スタックトレースのためのスレッド0

Thread 0 Crashed:
0   libSystem.B.dylib              0x3293f98c 0x328c1000 + 518540
1   libSystem.B.dylib              0x3293f97c 0x328c1000 + 518524
2   libSystem.B.dylib              0x3293f96e 0x328c1000 + 518510
3   libSystem.B.dylib              0x3295461a 0x328c1000 + 603674
4   libstdc++.6.dylib              0x30a143b0 0x309cf000 + 283568
5   libobjc.A.dylib                0x3347a858 0x33475000 + 22616
6   libstdc++.6.dylib              0x30a12776 0x309cf000 + 276342
7   libstdc++.6.dylib              0x30a127ca 0x309cf000 + 276426
8   libstdc++.6.dylib              0x30a12896 0x309cf000 + 276630
9   libobjc.A.dylib                0x33479714 0x33475000 + 18196
10  CoreFoundation                 0x335c8210 0x33534000 + 606736
11  CoreFoundation                 0x3354ea8e 0x33534000 + 109198
12  CoreFoundation                 0x33545ab8 0x33534000 + 72376
13  Journaler Lite                 0x0001699e -[AccountManager unsignedIntegerValueForPath:] (AccountManager.m:151)
...

こちらはコードから AccountManager.m:

 NSNumber *number = ...;
 if (number) {
  return [number unsignedIntegerValue]; // line 151
 } else {
  return 0;
 }

主要な問題が読めるようになクラッシュログを?このアプリクラッシュのどこかの図書館システム、追加情報あるものをどうしたのか?

更新: 私ンターネットで調べのフォーラム投稿、例外タイプ EXC_CRASH (SIGABRT) 最初からクラッシュしたスレッドのスタックです:

Thread 0 Crashed:
0   libSystem.B.dylib              0x3293f98c 0x328c1000 + 518540
1   libSystem.B.dylib              0x3293f97c 0x328c1000 + 518524
2   libSystem.B.dylib              0x3293f96e 0x328c1000 + 518510
3   libSystem.B.dylib              0x3295461a 0x328c1000 + 603674
4   libstdc++.6.dylib              0x30a143b0 0x309cf000 + 283568
5   libobjc.A.dylib                0x3347a858 0x33475000 + 22616
6   libstdc++.6.dylib              0x30a12776 0x309cf000 + 276342
7   libstdc++.6.dylib              0x30a127ca 0x309cf000 + 276426
8   libstdc++.6.dylib              0x30a12896 0x309cf000 + 276630
9   libobjc.A.dylib                0x33479714 0x33475000 + 18196
10  CoreFoundation                 0x335c8210 0x33534000 + 606736
11  CoreFoundation                 0x3354ea8e 0x33534000 + 109198

この例外の型EXC_CRASH (SIGABRT))を意味するのか。

役に立ちましたか?

解決

まず、あなたは何が起こっているかを理解することDSYMを使用してクラッシュログをsymbolicateする必要があります。あなたは、アプリケーションが構築された時間からDSYMファイルを持っている必要があります。 DSYMファイルには、あなたが戻って、コードの読み込み可能なラインにそれらのメモリアドレスから逆マップできます。

SIGABRTは、あなたがそのような配列は唯一の1つのアイテムを持っていた場合[someArray objectAtIndex:2]を呼び出すように未処理の例外を持っているときあなたが得ることの信号です。または、より頻繁に、認識されないセレクター:。[NSArray unsignedIntValue]

この質問するでこのクラッシュログを見てみましょう。注Foundationのコールスタックのライブラリがあなたのコードと同じであることを - 。そして、それは認識されていないセレクタです。

あなたのコードがあります:

NSNumber *num = foo;
if (num)
{
  bar = [num unsignedIntValue];
}

あなたが私たちに語っていない - が、非常に重要なのは - 「foo」という中では何かということです。どのようにするNSNumberことを割り当てるのですか?それはするNSNumber以外のオブジェクトである場合は、あなたのクラッシュログはあなたのようになります。

あなたがプログラミングで本当に守備のになりたいと思った場合、あなたが言うことができます:

if (num && [num isKindOfClass:[NSNumber class]])

しかし、実際に、どのようなあなたの "foo" といういつものNSNumberを返すべきであるされています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top