13

iOS7 でのみ発生するクラッシュがあります。アプリは 6.1 SDK に対してコンパイルされます。これを自分で再現することはできませんが、クラッシュ レポートから、一部のユーザーで発生していることがわかります。問題は、スタック トレースにユーザー コードがないため、追跡するのが難しいことです。

Exception Type: EXC_BAD_ACCESS Code: KERN_INVALID_ADDRESS at 0x13
0    libobjc.A.dylib     objc_msgSend + 5
1    UIKit   -[UIApplication sendAction:to:from:forEvent:] + 90
2    UIKit   -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 30
3    UIKit   -[UIControl sendAction:to:forEvent:] + 44
4    UIKit   -[UIControl _sendActionsForEvents:withEvent:] + 374
5    UIKit   -[UIControl touchesEnded:withEvent:] + 590
6    UIKit   -[UIWindow _sendTouchesForEvent:] + 528
7    UIKit   -[UIWindow sendEvent:] + 832
8    UIKit   -[UIApplication sendEvent:] + 196
9    UIKit   _UIApplicationHandleEventQueue + 7096
10 ...   CoreFoundation  __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
16   UIKit   UIApplicationMain + 1136

ゾンビを有効にして、アプリでさまざまなアクションを実行しようとしましたが、何もフラグが立てられませんでした。

アップデート

これは、iOS 7.1 の下で [UIPickerView _updateSelectedRows], EXC_BAD_ACCESS に変化した可能性があると思います。さらに調査します。

Thread : Crashed: com.apple.main-thread
0  libobjc.A.dylib                0x39576626 objc_msgSend + 5
1  UIKit                          0x3187b12f -[UIPickerView _updateSelectedRows] + 54
2  UIKit                          0x3187b26f -[UIPickerView didMoveToWindow] + 78
3  UIKit                          0x3160ad37 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 1358
4  UIKit                          0x3160aaa5 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 700
5  UIKit                          0x3160a40d __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 112
6  UIKit                          0x3160a263 -[UIView(Hierarchy) _postMovedFromSuperview:] + 250
7  UIKit                          0x318a2a27 __UIViewWasRemovedFromSuperview + 218
8  UIKit                          0x31609187 -[UIView(Hierarchy) removeFromSuperview] + 270
9  UIKit                          0x316cf26f -[UIPeripheralHost(UIKitInternal) adjustHostViewForTransitionCompletion:] + 310
10 UIKit                          0x31a6ca8b __53-[UIPeripheralHost(UIKitInternal) executeTransition:]_block_invoke1364 + 318
11 UIKit                          0x3164378d -[UIViewAnimationBlockDelegate _didEndBlockAnimation:finished:context:] + 284
12 UIKit                          0x316433d7 -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 178
13 UIKit                          0x316432ef -[UIViewAnimationState animationDidStop:finished:] + 66
14 QuartzCore                     0x3128de0b CA::Layer::run_animation_callbacks(void*) + 234
15 libdispatch.dylib              0x39a55d3f _dispatch_client_callout + 22
16 libdispatch.dylib              0x39a586c3 _dispatch_main_queue_callback_4CF + 278
17 CoreFoundation                 0x2eda6679 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8
18 CoreFoundation                 0x2eda4f45 __CFRunLoopRun + 1308
19 CoreFoundation                 0x2ed0f7a9 CFRunLoopRunSpecific + 524
20 CoreFoundation                 0x2ed0f58b CFRunLoopRunInMode + 106
21 GraphicsServices               0x33c6c6d3 GSEventRunModal + 138
22 UIKit                          0x3166e891 UIApplicationMain + 1136
4

4 に答える 4

4

アニメーションまで追跡できたプロジェクトとほぼ同じクラッシュ ログがありました。問題は、画面のオンとオフで UIPickerView をアニメーション化したことです。アニメーション中に UIPickerView を所有していた ViewController がポップされ、割り当てが解除された場合。アニメーション完了ブロックのスーパービューから UIPickerView を削除することで、これを解決しました。 [UIView animateWithDuration:0.5f animations:^{ //Set the destination frame of the PickerView } completion:^(BOOL finished) { [self.pickerView removeFromSuperview]; }];

于 2014-04-02T19:55:05.950 に答える
0

他のクラッシュ レポート ツールについては知りませんが、Crashlytics には CLS_LOG() マクロが含まれています: http://support.crashlytics.com/knowledgebase/articles/92519-how-do-i-use-logging

開発中は NSLog() として動作しますが、現場ではログ ステートメントがクラッシュ レポートに含まれます。したがって、デバッグ ステートメントを CLS_LOG に置き換えるか、問題のコードにユーザー アクションをキャプチャする多くのステートメントを追加してから、新しいバージョンのアプリをデプロイすることをお勧めします。

(古い質問ですが、最近似たようなことに遭遇したので、これを文書化したいと思います。)

于 2014-03-14T10:37:59.713 に答える
0

UIPicker で同様のクラッシュが発生しました。デリゲートの割り当てを解除する前に、デリゲートを nil に設定するのを忘れていたことが判明しました。この問題は、ブレークポイントを有効にして実行している場合にのみ発生しました。これが他の誰かに役立つことを願っています。

于 2014-04-14T23:36:29.867 に答える