objc_exception_throw / crash / stack trace

时间:2015-03-24 16:06:44

标签: ios objective-c stack stack-trace

我正在尝试调试我从Flurry Analytics获得的崩溃日志,但我看不到问题。这是堆栈跟踪:

0   CoreFoundation                      0x181f36530 <redacted> + 132
1   libobjc.A.dylib                     0x192f0c0e4 _objc_exception_throw + 60
2   CoreFoundation                      0x181e248e8 -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 420
3   CoreFoundation                      0x181e3ff44 +[NSDictionary dictionaryWithObject:forKey:] + 60
4   memono                              0x10005f96c -[AppDelegate iCLoudSyncCheckNotificationSync:] + 1244
5   CoreFoundation                      0x181edcddc <redacted> + 20
6   CoreFoundation                      0x181e1b370 __CFXNotificationPost + 2060
7   Foundation                          0x182d3f520 -[NSNotificationCenter postNotificationName:object:userInfo:] + 72
8   memono                              0x10005c02c -[AppDelegate syncWithCompletion:] + 660
9   libdispatch.dylib                   0x19355d994 <redacted> + 24
10  libdispatch.dylib                   0x19355d954 <redacted> + 16
11  libdispatch.dylib                   0x19356220c __dispatch_main_queue_callback_4CF + 1608
12  CoreFoundation                      0x181eee2ec <redacted> + 12
13  CoreFoundation                      0x181eec394 <redacted> + 1492
14  CoreFoundation                      0x181e191f4 _CFRunLoopRunSpecific + 396
15  GraphicsServices                    0x18b23b6fc _GSEventRunModal + 168
16  UIKit                               0x1867aa10c _UIApplicationMain + 1488
17  memono                              0x100099b7c -[UpdatePromtRateViewController .cxx_destruct] + 220
18  libdyld.dylib                       0x19358aa08 <redacted> + 4

我还遇到了一些其他的崩溃,它始终以[UpdatePromtRateViewController ...]开头这只是一个viewController我在应用更新后显示一次,以促使用户对应用进行评级。有一个按钮可以关闭我的应用程序并直接通过App Store应用程序中的应用程序。可能是因为它不是“真正的崩溃”而且我得到这个崩溃日志只是因为应用程序立即被这个按钮结束了? 还是与那本字典有关?也许我放入零物件?我可以通过做一些事情来解决这个问题 - 用“如果对象不是零”声明来围绕词典吗?

我在堆栈跟踪读取方面不是很好,如果有人能给我一个暗示这个崩溃日志试图告诉我的内容会很好!?

感谢您的帮助!

修改

Flurry分析没有给出其他消息......我正在做的是再次设置所有本地通知,以便将徽章图标编号排序......它工作正常,奇怪的是[UpdatePromtRateViewController]总是出现在崩溃日志中,我只使用了一次,因此应该有其他崩溃日志 - [UpdatePromtRateViewController],因为我在第一次应用程序启动时只使用一次,然后再也没有...这是代码我在那里做什么

NSEntityDescription *entityDescriptionDelegate = [NSEntityDescription entityForName:@"Entity" inManagedObjectContext:self.managedObjectContext];
    NSFetchRequest *requestData = [[NSFetchRequest alloc] init];
    [requestData setEntity:entityDescriptionDelegate];
    NSError *error;


    NSArray *objectsArray = [self.managedObjectContext executeFetchRequest:requestData error:&error];


    for (NSManagedObject *object in objectsArray) {



        if (!([object valueForKey:@"alarmDate"] == nil)) {


            _badge += 1;


            UILocalNotification *alarm = [[UILocalNotification alloc] init];
            alarm.applicationIconBadgeNumber  = _badge; // 1;
            alarm.applicationIconBadgeNumber = 0;
            alarm.timeZone = [NSTimeZone defaultTimeZone];

            NSString *alarmTitleString = [[NSString alloc] initWithString:[object valueForKey:@"alarmTitle"]];

            alarm.alertBody = alarmTitleString;
            alarm.fireDate  = [object valueForKey:@"alarmDate"];
            alarm.soundName = UILocalNotificationDefaultSoundName;
            NSDictionary *userInfo = [NSDictionary dictionaryWithObject:[object valueForKey:@"alarmID"] forKey:@"ID"];

            alarm.userInfo = userInfo;
            [[UIApplication sharedApplication] scheduleLocalNotification:alarm];

            [object setValue:@"yes" forKey:@"alarmSet"];


            [UILocalNotification setBadge];

            alarm.applicationIconBadgeNumber = 0;

1 个答案:

答案 0 :(得分:2)

此方法崩溃:iCLoudSyncCheckNotificationSync:并且,正如您所推测的那样,很可能是因为您正在为密钥传递nil

崩溃跟踪意味着在C ++析构函数中需要进行大量繁重的工作。这肯定会失败。但崩溃痕迹可能是错误的;从析构函数到UIApplicationMain()的调用似乎有点奇怪。

无论如何,是的,这是真正的崩溃,即使它发生在应用程序终止,你应该找出原因并解决它。特别是,如果您的应用程序正在终止以响应&#34;退出&#34;像按钮的按下,它真的不应该触发云同步或其他慢速操作。