PLCrashReporter - 如何直接从 Xcode 本身将 .plcrash 转换为 .crash 并将其保存在本地

Posted

技术标签:

【中文标题】PLCrashReporter - 如何直接从 Xcode 本身将 .plcrash 转换为 .crash 并将其保存在本地【英文标题】:PLCrashReporter - How to convert .plcrash to .crash directly from Xcode itself and save it locally 【发布时间】:2011-12-30 12:20:20 【问题描述】:

我目前正在使用 PLCrashReporter,需要一些帮助才能将 plcrash 直接转换为 .crash 文件,而不是使用 plcrashutil。

我现在做的是——

我模拟了一次崩溃,它创建了一个 myapp.plcrash 文件。

生成后,我在命令行上使用以下内容 -

plcrashutil convert --format=iphone myapp.plcrash > app.crash

这很好用 - 但是有没有办法我不必做这个额外的步骤,直接从我的代码中将其转换为 .crash 可能通过导入库或其他方式??

任何解决方案???

【问题讨论】:

【参考方案1】:

找到答案

如果其他人正在寻找它,这就是解决方案..

PLCrashReportTextFormat textFormat = PLCrashReportTextFormatios;


    /* Decode data */

    PLCrashReport *crashLog = [[PLCrashReport alloc] initWithData: data error: &error];
    if (crashLog == nil) 
        NSLog(@"Could not decode crash file :%@",  [[error localizedDescription] UTF8String]);
     else 
        NSString* report = [PLCrashReportTextFormatter stringValueForCrashReport: crashLog withTextFormat: textFormat];
        NSLog(@"Crash log \n\n\n%@ \n\n\n", report);

        NSString *outputPath = [documentsDirectory stringByAppendingPathComponent: @"app.crash"];
        if (![report writeToFile:outputPath atomically:YES encoding:NSUTF8StringEncoding error:nil]) 
            NSLog(@"Failed to write crash report");
         else 
            NSLog(@"Saved crash report to: %@", outputPath);
        

    

【讨论】:

你在哪里表示数据? 尝试了一段时间,是的,这种新格式可以使用 symbolicatecrash 进行符号化,尽管它看起来与 plcrashutils 生成的崩溃文件不同。就我而言,我只是通过网络发送了报告(无需发布二进制数据)。 vivianaranha 请添加 swift 版本 我这样做了,但它仍然没有显示错误的行号【参考方案2】:

您是否尝试过以新格式对 .crash 文件进行符号化?

【讨论】:

以上是关于PLCrashReporter - 如何直接从 Xcode 本身将 .plcrash 转换为 .crash 并将其保存在本地的主要内容,如果未能解决你的问题,请参考以下文章

使用 PLCrashReporter 会禁用 iTunes 连接崩溃报告吗?

如何为 OS X 应用程序符号化 PLCrashReports

从 PLCrashReport 获取使用完整数据

如何直接从输入流中插入值?

Python二进制文件直接从字符串写入

如何防止直接设置实例属性?