【问题标题】:xcode - alert that shows crash reasonxcode - 显示崩溃原因的警报
【发布时间】:2017-10-30 16:05:32
【问题描述】:

有没有办法建立一个显示崩溃原因的警告框?具体来说,哪一行代码导致了崩溃?

我的老板要求这样做,但我还没有找到使这成为可能的方法。我正在浏览设备上的分析选项卡并找到崩溃,但他想要在设备上填充的东西(它是一个内部应用程序)给出崩溃的原因。

这可能吗?

【问题讨论】:

  • 当应用程序崩溃时,它会退出到主屏幕,您无法在崩溃之前或之后显示弹出窗口!
  • IOS 应用内置了 Testflight 功能。您将能够在 Xcode->Window->Organizer->Crashes 中检索崩溃报告。或者,您也可以在应用中添加 Fabric 的 Crashlytics,然后在 Web 上查看崩溃报告。
  • 好吧...所以我看到的是我老板的要求是不可能的...我已经让它能够打开一个警告说“应用程序已崩溃”并发送信息......但这基本上就是我已经得到的。感谢您在我与老板交谈时给我弹药!

标签: objective-c xcode crash


【解决方案1】:

如果您想在应用崩溃时显示警报,您不能这样做,但您可以在崩溃后再次打开应用时阅读崩溃日志。

您可以创建一个具有以下逻辑的方法,当您在崩溃后再次打开应用程序时,它基本上会读取上次崩溃的跟踪。

aslmsg q, m;
    int i;
    const char *key, *val;
    float how_old = fTime ;
    q = asl_new(ASL_TYPE_QUERY);
    asl_set_query(q, ASL_KEY_LEVEL, strLoggerLevel ,ASL_QUERY_OP_LESS_EQUAL);
    asl_set_query(q, ASL_KEY_FACILITY, [@"YourBundleIdOfAPP" UTF8String] ,ASL_QUERY_OP_EQUAL);

    asl_set_query(q, ASL_KEY_TIME, [[NSString stringWithFormat:@"%.f", [[NSDate date] timeIntervalSince1970] - how_old] UTF8String], ASL_QUERY_OP_GREATER_EQUAL);
    int goInside=0;
    aslresponse r = asl_search(NULL, q);
    while (NULL != (m = aslresponse_next(r)))
    {
        NSString *cValueToWrite;
        NSMutableDictionary *tmpDict = [NSMutableDictionary dictionary];

        for (i = 0; (NULL != (key = asl_key(m, i))); i++)
        {
            //get the only required fields
            if(i==12 || i==10 || i==11 || i==8 || i==9 ||i==3)
            {

                NSString *keyString = [NSString stringWithUTF8String:(char *)key];
                val = asl_get(m, key);

                NSString *string = [NSString stringWithUTF8String:val];
                [tmpDict setObject:string forKey:keyString];
            }
        }

cValueToWrite=[[NSString alloc]initWithFormat:@"\n--------------[Debug]----------------\nDateTime: %@\nApplication: %@\nInfo: %@",[tmpDict valueForKey:@"CFLog Local Time"],[tmpDict valueForKey:@"Sender"],[tmpDict valueForKey:@"Message"]];
}

strLoggerLevelNSString,它包含您想要的记录器类型,其范围高达 7

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-18
    • 2014-11-13
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多