2

ユーザーは、私が再現するのが非常に困難な SIGSEGV クラッシュを報告しています。これは比較的頻繁に発生しますが、再現できたことはありません。他の StackOverflow の投稿を読むと、ゾンビ オブジェクトを見つけるために NSZombies をオンにする必要があることはわかっていますが、Instruments で何をしてもゾンビが表示されません。

私はARCを使用していることに注意してください。

これら 2 つのクラッシュ レポートから何らかの意味を理解できる人はいますか?少なくとも、どこからゾンビを探し始めればよいかを知ることができますか? そして、ゾンビをインストゥルメントに表示させる方法に関するヒントはありますか? ありがとう!

クラッシュレポート #1:

0 MyApp 0x000e4972 testflight_backtrace + 238
1 MyApp 0x000e565c TFSignalHandler + 264
2 libsystem_c.dylib 0x31cd37ec _sigtramp + 48
3 UIKit 0x33e47bde -[UIViewController unloadViewForced:] + 250
4 UIKit 0x33f8f498 -[UIViewController purgeMemoryForReason:] + 64
5 Foundation 0x37f264fe __57-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_0 + 18
6 CoreFoundation 0x376c8546 ___CFXNotificationPost_block_invoke_0 + 70
7 CoreFoundation 0x37654096 _CFXNotificationPost + 1406
8 Foundation 0x37e9a3ea -[NSNotificationCenter postNotificationName:object:userInfo:] + 66
9 Foundation 0x37e9bc1a -[NSNotificationCenter postNotificationName:object:] + 30
10 UIKit 0x33f5a270 -[UIApplication _performMemoryWarning] + 80
11 UIKit 0x33f5a36a -[UIApplication _receivedMemoryNotification] + 174
12 libdispatch.dylib 0x349572e0 _dispatch_source_invoke + 516
13 libdispatch.dylib 0x34954b80 _dispatch_queue_invoke$VARIANT$mp + 52
14 libdispatch.dylib 0x34954ec0 _dispatch_main_queue_callback_4CF$VARIANT$mp + 156
15 CoreFoundation 0x376cf2ac __CFRunLoopRun + 1268
16 CoreFoundation 0x376524a4 CFRunLoopRunSpecific + 300
17 CoreFoundation 0x3765236c CFRunLoopRunInMode + 104
18 GraphicsServices 0x3255f438 GSEventRunModal + 136
19 UIKit 0x33dd6e7c UIApplicationMain + 1080
20 MyApp 0x0001b65e main (main.m:16)
21 MyApp 0x000115af start + 39

クラッシュレポート #2:

0 MyApp 0x0018e972 testflight_backtrace + 238
1 MyApp 0x0018f65c TFSignalHandler + 264
2 libsystem_c.dylib 0x31d067ec _sigtramp + 48
3 UIKit 0x33e7abde -[UIViewController unloadViewForced:] + 250
4 UIKit 0x33fc2498 -[UIViewController purgeMemoryForReason:] + 64
5 MyApp 0x000ec988 -[MyTableController didReceiveMemoryWarning] (MyTableController.m:129)
6 MyApp 0x0010a8a8 -[FeaturedViewController didReceiveMemoryWarning] (FeaturedViewController.m:65)
7 Foundation 0x37f594fe __57-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_0 + 18
8 CoreFoundation 0x376fb546 ___CFXNotificationPost_block_invoke_0 + 70
9 CoreFoundation 0x37687096 _CFXNotificationPost + 1406
10 Foundation 0x37ecd3ea -[NSNotificationCenter postNotificationName:object:userInfo:] + 66
11 Foundation 0x37ecec1a -[NSNotificationCenter postNotificationName:object:] + 30
12 UIKit 0x33f8d270 -[UIApplication _performMemoryWarning] + 80
13 UIKit 0x33f8d36a -[UIApplication _receivedMemoryNotification] + 174
14 libdispatch.dylib 0x3498a2e0 _dispatch_source_invoke + 516
15 libdispatch.dylib 0x34987b80 _dispatch_queue_invoke$VARIANT$mp + 52
16 libdispatch.dylib 0x34987ec0 _dispatch_main_queue_callback_4CF$VARIANT$mp + 156
17 CoreFoundation 0x377022ac __CFRunLoopRun + 1268
18 CoreFoundation 0x376854a4 CFRunLoopRunSpecific + 300
19 CoreFoundation 0x3768536c CFRunLoopRunInMode + 104
20 GraphicsServices 0x32592438 GSEventRunModal + 136
21 UIKit 0x33e09e7c UIApplicationMain + 1080
22 MyApp 0x000c565e main (main.m:16)
23 MyApp 0x000bb5af start + 39
4

1 に答える 1

2

アプリがメモリ警告を受け取った場合、何かが間違っているようです。これは、デバッグ メニューを使用してシミュレーターで強制的に実行することも、デバイスで (実稼働コードでは違法)_performMemoryWarningメソッドを送信して強制的に実行することもできます。

[[UIApplication sharedApplication] _performMemoryWarning];

これを繰り返しタイマーに設定して、定期的に警告を送信できます。これを でラップして、#IFDEF DEBUG本番環境に移行しないようにすることをお勧めします。

これで問題が解決するわけではありませんが、重要な最初のステップであるクラッシュを再現するのに役立つ場合があります。

于 2012-10-20T06:26:57.533 に答える