iOS应用程序中的生产崩溃日志

时间:2018-05-30 06:39:32

标签: ios swift crash

我的崩溃日志说没有任何信息。使用atos命令我得到这个信息,说明loginviewcontroller中的专用UnsafeBufferPointer.count.getter。知道造成这次崩溃的原因吗?

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000010
VM Region Info: 0x10 is not in any region.  Bytes before following region: 4340006896
      REGION TYPE                      START - END             [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      __TEXT                 0000000102af4000-0000000102af8000 

Thread 7 name:
Thread 7 Crashed:
0   libobjc.A.dylib                 0x00000001821e4430 objc_msgSend + 16
1   UIKit                           0x000000018c543d90 -[UIWindowLayer actionForKey:] + 80 (UIWindow.m:432)
2   QuartzCore                      0x0000000186fcb984 -[CALayer layoutSublayers] + 244 (CALayer.mm:9308)
3   QuartzCore                      0x0000000186fcfad0 CA::Layer::layout_if_needed(CA::Transaction*) + 332 (CALayer.mm:9182)
4   QuartzCore                      0x0000000186f3c31c CA::Context::commit_transaction(CA::Transaction*) + 336 (CALayer.mm:2416)
5   QuartzCore                      0x0000000186f63b40 CA::Transaction::commit() + 540 (CATransactionInternal.mm:425)
6   QuartzCore                      0x0000000186f64980 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 92 (CATransactionInternal.mm:795)
7   CoreFoundation                  0x0000000182f2ecdc __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32 (CFRunLoop.c:1824)
8   CoreFoundation                  0x0000000182f2c694 __CFRunLoopDoObservers + 412 (CFRunLoop.c:1934)
9   CoreFoundation                  0x0000000182e4cc78 CFRunLoopRunSpecific + 468 (CFRunLoop.c:3247)
10  WebCore                         0x000000018adc184c RunWebThread(void*) + 560 (WebCoreThread.mm:690)
11  libsystem_pthread.dylib         0x0000000182bb02b4 _pthread_body + 308 (pthread.c:740)
12  libsystem_pthread.dylib         0x0000000182bb0180 _pthread_start + 312 (pthread.c:799)
13  libsystem_pthread.dylib         0x0000000182baeb74 thread_start + 4

1 个答案:

答案 0 :(得分:1)

在我看来,这就像堆损坏。可能是dangling pointer。基本上,-[UIWindowLayer actionForKey:]与指向某个对象的指针进行交互,而该对象不再是指向有效对象的指针。这是objc_msgSend内部崩溃的极为常见的原因。

恐怕要说这份报告不太可能揭示原因。悬空指针的原因发生在与崩溃不同的时间(效果)是很常见的。因此,捕获的堆栈跟踪将揭示有关为何该指针不再有效的任何信息的可能性很小。

在这种情况下,我通常建议:

  • 寻找其他看起来与堆损坏相关的崩溃(例如,objc_msgSend中的更多崩溃)
  • 在Instruments中尝试Zombies
  • 尝试使用malloc scribble或guardmalloc,这是另外两个不错的内存调试工具

很难(甚至常常不可能)推断堆损坏。因此,只需尝试查找并修复尽可能多的问题。完全有可能其中之一是导致各种崩溃的原因,其中之一可能就是这种崩溃。

祝你好运!