objective-c - 如何追踪这些崩溃?

标签 objective-c xcode macos cocoa

我多年来一直使用 Obj-C、Xcode,但有时这些崩溃会发生在项目中。我不知道如何处理这些。

如果有人有任何想法,请引导我走向正确的方向,以便我可以锻炼。

注意:以下日志由客户从实时应用程序发送。

崩溃日志的片段是;

Date/Time:             2018-02-08 16:39:36.053 +0530
OS Version:            Mac OS X 10.12.6 (16G29)
Report Version:        12
Anonymous UUID:        163431E3-7543-821C-B71C-392218AA5AD3

Sleep/Wake UUID:       1D59C34E-52D6-4F57-A2CE-4C8FAC4387FE

Time Awake Since Boot: 9100 seconds
Time Since Wake:       6000 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       EXC_I386_GPFLT
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [0]

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libdispatch.dylib             	0x00007fffdb6ca521 _dispatch_call_block_and_release + 9
1   libdispatch.dylib             	0x00007fffdb6c18fc _dispatch_client_callout + 8
2   libdispatch.dylib             	0x00007fffdb6ceaac _dispatch_main_queue_callback_4CF + 925
3   com.apple.CoreFoundation      	0x00007fffc5facbc9 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
4   com.apple.CoreFoundation      	0x00007fffc5f6dc0d __CFRunLoopRun + 2205
5   com.apple.CoreFoundation      	0x00007fffc5f6d114 CFRunLoopRunSpecific + 420
6   com.apple.HIToolbox           	0x00007fffc54cdebc RunCurrentEventLoopInMode + 240
7   com.apple.HIToolbox           	0x00007fffc54cdcf1 ReceiveNextEventCommon + 432
8   com.apple.HIToolbox           	0x00007fffc54cdb26 _BlockUntilNextEventMatchingListInModeWithFilter + 71
9   com.apple.AppKit              	0x00007fffc3a66a54 _DPSNextEvent + 1120
10  com.apple.AppKit              	0x00007fffc41e27ee -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 2796
11  com.apple.AppKit              	0x00007fffc3a5b3db -[NSApplication run] + 926
12  com.apple.AppKit              	0x00007fffc3a25e0e NSApplicationMain + 1237
13  libdyld.dylib                 	0x00007fffdb6f7235 start + 1

Thread 1:
0   libsystem_kernel.dylib        	0x00007fffdb825bf2 __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fffdb9117fa _pthread_cond_wait + 712
2   libc++.1.dylib                	0x00007fffda28e4cd std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 47
3   com.apple.JavaScriptCore      	0x00007fffc8f7b43c void std::__1::condition_variable_any::wait<std::__1::unique_lock<bmalloc::Mutex> >(std::__1::unique_lock<bmalloc::Mutex>&) + 108
4   com.apple.JavaScriptCore      	0x00007fffc8f7b3bb bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadRunLoop() + 155
5   com.apple.JavaScriptCore      	0x00007fffc8f7b28d bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadEntryPoint(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*) + 29
6   com.apple.JavaScriptCore      	0x00007fffc8f7b53d void* std::__1::__thread_proxy<std::__1::tuple<void (*)(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*), bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*> >(void*) + 93
7   libsystem_pthread.dylib       	0x00007fffdb91093b _pthread_body + 180
8   libsystem_pthread.dylib       	0x00007fffdb910887 _pthread_start + 286
9   libsystem_pthread.dylib       	0x00007fffdb91008d thread_start + 13

最佳答案

0   libdispatch.dylib               0x00007fffdb6ca521 _dispatch_call_block_and_release + 9
1   libdispatch.dylib               0x00007fffdb6c18fc _dispatch_client_callout + 8
2   libdispatch.dylib               0x00007fffdb6ceaac _dispatch_main_queue_callback_4CF + 925

当 GCD 尝试在主线程上执行 block 时发生崩溃。检查回调 block 以确保它们干净地捕获状态并且所有需要复制的 block 都被正确复制。

可能是因为该 block 捕获了一些对象,该对象被过早释放因为该 block 本身被过度释放(不太可能)。

关于objective-c - 如何追踪这些崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48707516/

相关文章:

linux - 从 Mac 上的命令行删除当前文件夹和所有子文件夹中的 .DS_STORE 文件

Objective-C 响应选择器

iphone - HmacSHA256 objective-c 加密

ios - xcode iOS 每次检查 url 前缀

xcode - 从 <math.h> 链接函数时,OSX/Darwin 无法解析符号

objective-c - 用于从 Microsoft PowerPoint 演示文稿中提取数据的 Cocoa API

python - 如何让我的脚本自动将我的管理员密码输入 Mac OS 终端?

objective-c - 如何在 Objective-C 中添加 QLPreviewController 作为 subview

ios - 由于空间不足,无法在 xcode 中找到配置文件

xcode - 检查 Swift 中的类对象计数