【问题标题】:Getting to the bottom of crash到达崩溃的底部
【发布时间】:2012-03-01 20:39:48
【问题描述】:

我有以下崩溃,我无法按需复制,但确实发生了足以引起用户注意的情况。

这个崩溃报告也被符号化了。怎么查原因!!!这似乎只发生在 4.1

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0x9f069184
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                     0x000027d8 objc_msgSend + 16
1   CoreFoundation                      0x0007d749 ____CFXNotificationPost_old_block_invoke_1 + 45
2   libSystem.B.dylib                   0x000d5984 _dispatch_call_block_and_release + 20
3   libSystem.B.dylib                   0x000d66b0 _dispatch_continuation_pop + 72
4   libSystem.B.dylib                   0x000d69fc _dispatch_main_queue_callback_4CF + 220
5   CoreFoundation                      0x0002789b __CFRunLoopRun + 1335
6   CoreFoundation                      0x00027277 CFRunLoopRunSpecific + 231
7   CoreFoundation                      0x0002717f CFRunLoopRunInMode + 59
8   GraphicsServices                    0x000045f3 GSEventRunModal + 115
9   GraphicsServices                    0x0000469f GSEventRun + 63
10  UIKit                               0x00004123 -[UIApplication _run] + 403
11  UIKit                               0x0000212f UIApplicationMain + 671
12  MyApp                               0x000024e3 main (main.m:17)

从那以后,我设法获得了更多信息,但不多。

2012-02-12 18:03:04.556 MyApp[462:307] (null): unrecognized selector sent to class 0x3e0a360c
2012-02-12 18:03:04.618 MyApp[462:307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '(null): unrecognized selector sent to class 0x3e0a360c'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x33506ed3 __exceptionPreprocess + 114
    1   libobjc.A.dylib                     0x30412811 objc_exception_throw + 24
    2   CoreFoundation                      0x335086ff +[NSObject(NSObject) doesNotRecognizeSelector:] + 102
    3   CoreFoundation                      0x334b01d9 ___forwarding___ + 508
    4   CoreFoundation                      0x334aff90 _CF_forwarding_prep_0 + 48
    5   Foundation                          0x302a86b3 _nsnote_callback + 142
    6   CoreFoundation                      0x334e4749 ____CFXNotificationPost_old_block_invoke_1 + 44
    7   libSystem.B.dylib                   0x31d05984 _dispatch_call_block_and_release + 20
    8   libSystem.B.dylib                   0x31d066b0 _dispatch_continuation_pop + 72
    9   libSystem.B.dylib                   0x31d069fc _dispatch_main_queue_callback_4CF + 220
    10  CoreFoundation                      0x3348e89b __CFRunLoopRun + 1334
    11  CoreFoundation                      0x3348e277 CFRunLoopRunSpecific + 230
    12  CoreFoundation                      0x3348e17f CFRunLoopRunInMode + 58
    13  GraphicsServices                    0x31b5e5f3 GSEventRunModal + 114
    14  GraphicsServices                    0x31b5e69f GSEventRun + 62
    15  UIKit                               0x341bd123 -[UIApplication _run] + 402
    16  UIKit                               0x341bb12f UIApplicationMain + 670

现在我所有的 addObservers 都是基于块的,所以我不明白为什么它会导致无法识别的选择器。

【问题讨论】:

  • 我不知道,所以我没有发布答案,但看起来它正在尝试调用已发布的 Block?
  • 不确定这是否是原因,但我会在解除分配之前检查我是否将对象作为观察者移除(到NSNotificationCenter)。
  • 你的崩溃只是因为 NSNotification,确定吗?尝试注释掉该代码并运行。
  • 问题出在哪里/哪里!一点都不清楚!

标签: iphone debugging


【解决方案1】:

这种方式在调试崩溃时对我们没有多大帮助。我找到了调试崩溃代码的最佳方法之一。按照调试技术的链接:

https://cocoadev.com/DebuggingAutorelease.html

您需要非常仔细地分析您的控制台,才能真正了解崩溃发生的原因。这对我几乎所有未启用 ARC 的代码都有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-13
    • 2021-03-29
    • 1970-01-01
    • 2023-04-03
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多