2011-07-30 5 views
0

私のApp on iPhoneでランダムなクラッシュに直面しています。ここにクラッシュログがあります。クラッシュログは、おそらくスレッドセーフまたはUI動作の問題に関連していると感じています。iPhone Appは、iOS 4.0以降でランダムクラッシュを取得します。

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Codes: KERN_INVALID_ADDRESS at 0x60000008 
Crashed Thread: 0 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libobjc.A.dylib     0x30de0c98 0x30dde000 + 11416 
1 UIKit       0x335e0ec2 0x335c4000 + 118466 
2 UIKit       0x3366dc1a 0x335c4000 + 695322 
3 CoreFoundation     0x3683456a 0x36826000 + 58730 
4 UIKit       0x335e0ec2 0x335c4000 + 118466 
5 UIKit       0x335e0e62 0x335c4000 + 118370 
6 UIKit       0x335e0e34 0x335c4000 + 118324 
7 UIKit       0x335e0b86 0x335c4000 + 117638 
8 UIKit       0x335e141c 0x335c4000 + 119836 
9 UIKit       0x335dfbee 0x335c4000 + 113646 
10 UIKit       0x335df568 0x335c4000 + 111976 
11 UIKit       0x335c830c 0x335c4000 + 17164 
12 UIKit       0x335c7c4c 0x335c4000 + 15436 
13 GraphicsServices    0x31623e70 0x3161f000 + 20080 
14 CoreFoundation     0x3689ba90 0x36826000 + 481936 
15 CoreFoundation     0x3689d838 0x36826000 + 489528 
16 CoreFoundation     0x3689e606 0x36826000 + 493062 
17 CoreFoundation     0x3682eebc 0x36826000 + 36540 
18 CoreFoundation     0x3682edc4 0x36826000 + 36292 
19 GraphicsServices    0x31623418 0x3161f000 + 17432 
20 GraphicsServices    0x316234c4 0x3161f000 + 17604 
21 UIKit       0x335f2d62 0x335c4000 + 191842 
22 UIKit       0x335f0800 0x335c4000 + 182272 
23 Tapatalk X      0x00002fa6 0x1000 + 8102 
24 Tapatalk X      0x00002f3c 0x1000 + 7996 

グローバル変数がランダムに壊れていることがあります。

この問題をどのように追跡することができますか、どのツールが役立つでしょうか?ありがとう!

+0

EXC_BAD_ACCESSはメモリエラーです。情報が不足しているため、Build&Analyzeを実行してみてください。 – jtbandes

+0

ありがとうございます。しかし、私はすべての強力なメモリリークとゴミの警告を "Build&Analyze"で削除しようとしましたが、それはこれまで役に立たなかった。より多くのツールについてのこれ以上の提案は高く評価されます。 – user268743

答えて

3

EXEC_BAD_ACCESSは、通常、すでに割り当て解除されたオブジェクトにアクセスしようとすると発生します。あなたは2つの方法でより多くの情報を得ることができます:

  1. プログラムをデバッグモードで実行すると、クラッシュするとスタックの内容が表示されます。

  2. NSZombiesを有効にするか、パフォーマンスツールゾンビを使用してプログラムを実行します。これは、解放後にどのオブジェクトにアクセスしたかを正確に伝えます。

クラッシュレポートからは、何が起きているのか分かりにくいです。メソッド名が表示されていないため、タパストークとは何ですか?

+0

質問にお答えいただきありがとうございます。実際、あなたが提供した両方の方法を試しました。問題は、スタックの内容が問題をトレースするのに役立たないということです。 – user268743

+0

質問にお返事いただきありがとうございます。問題は、スタックの内容が問題をトレースするのに役立たないということです。スタックトレースは直接根本原因を指摘しないためです。たとえば、私のクラッシュレポートはスタックバックトレースで、グラフィックをやっているメインスレッドでクラッシュが発生したことだけを示していますが、どこからコードが呼び出されたのかわかりませんでした。私はまだNSZombiesを試していますが、オブジェクト割り当ての割り当て履歴が見つかりました。それ以上の提案?ありがとう。 – user268743

+0

セカンダリスレッドでUIのことをしていますか?これはメインスレッドからのみ安全です... – sergio

関連する問題