2014-11-01 65 views
6

我的应用在某些情况下崩溃。无法找到原因&坠毁的地方。无法理解MyApp崩溃的位置

下面是崩溃日志(iPad/iOS 8.0.2)。提前

Hardware Model:  iPad2,5 
OS Version:   iOS 8.0.2 (12A405) 
Report Version:  105 

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x0000000000000000, 0x0000000000000000 
Triggered by Thread: 0 
Thread 0 Crashed: 
0 libsystem_kernel.dylib   0x306b3dfc __pthread_kill + 8 
1 libsystem_pthread.dylib   0x30733d0e pthread_kill + 58 
2 libsystem_c.dylib    0x30653934 abort + 72 
3 libc++abi.dylib     0x2f864bb8 abort_message + 84 
4 libc++abi.dylib     0x2f87e66a default_terminate_handler() + 262 
5 libobjc.A.dylib      0x30052f0e _objc_terminate() + 190 
6 libc++abi.dylib     0x2f87bdec std::__terminate(void (*)()) + 76 
7 libc++abi.dylib     0x2f87b5ac __cxa_throw + 108 
8 libobjc.A.dylib      0x30052d46 objc_exception_throw + 246 
9 CoreFoundation     0x225dfe58 +[NSException raise:format:arguments:] + 100 
10 Foundation      0x232af2c4 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 88 
11 BaseBoard      0x270a08d8 __25-[BSAction sendResponse:]_block_invoke + 140 
12 libdispatch.dylib    0x305bc99c _dispatch_barrier_sync_f_invoke + 44 
13 BaseBoard      0x270a0842 -[BSAction sendResponse:] + 98 
14 UIKit        0x25fd54d0 -[UIFetchContentInBackgroundAction sendResponse:] + 212 
15 libdispatch.dylib    0x305b3610 _dispatch_call_block_and_release + 8 
16 libdispatch.dylib    0x305b35fc _dispatch_client_callout + 20 
17 libdispatch.dylib    0x305be2b2 _dispatch_main_queue_callback_4CF$VARIANT$mp + 714 
18 CoreFoundation     0x225a5e5c __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 4 
19 CoreFoundation     0x225a457c __CFRunLoopRun + 1508 
20 CoreFoundation     0x224f1dac CFRunLoopRunSpecific + 472 
21 CoreFoundation     0x224f1bbe CFRunLoopRunInMode + 102 
22 GraphicsServices    0x2985404c GSEventRunModal + 132 
23 UIKit        0x25abda2c UIApplicationMain + 1436 
24 MyApp        0x000fb9f2 main (main.m:15) 
25 libdyld.dylib      0x305eeaac start + 0 

谢谢..

+0

添加一个全球性的异常断点http://blog.manbolo.com/2012/01/23/xcode- tips-1-break-on-exceptions – Flexicoder 2014-11-01 11:00:58

+0

感谢@flexicoer的回应。这次崩溃是在我发布的版本中。并没有步骤来重现此崩溃。我唯一拥有的这个崩溃日志。 – Vardhan 2014-11-01 11:09:31

+0

你能解释一下吗?我在我的应用程序中看到类似的崩溃,我无法弄清楚它崩溃的位置。 – tbag 2015-09-09 15:41:23

回答

12

对应于堆栈跟踪异常消息是:

“这一要求已进行绝育 - 你不能叫-sendResponse:两次 也没有编码后“

虽然不可能从堆栈单独确定,但你很可能称为com pletionHandler传递给你的应用程序委托的-application:performFetchWithCompletionHandler:方法两次。

1

基于您在setMinimumBackgroundFetchInterval:method中设置的值,OS会触发后台提取。 如果后台获取时间过长,您所看到的内容看起来像操作系统在您的应用中执行的操作。

给你一个时间窗口(30秒)来完成你的工作。如果你还没有完成,操作系统会用上面的例外杀死你的应用程序。 了解更多关于如何延长所需时间here

基本上,你需要问更多的时间来完成你的工作背景是这样的:

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    bgTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{ 
     // Clean up any unfinished task business by marking where you 
     // stopped or ending the task outright. 
     [application endBackgroundTask:bgTask]; 
     bgTask = UIBackgroundTaskInvalid; 
    }]; 

    // Start the long-running task and return immediately. 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

     // Do the work associated with the task, preferably in chunks. 

     [application endBackgroundTask:bgTask]; 
     bgTask = UIBackgroundTaskInvalid; 
    }); 
}