PLCrashReporter:创建易于阅读的堆栈跟踪

9
我刚刚下载并编译了PLCrashReporter,并将其添加到我的应用程序中。我已经测试过它,它运行良好。项目文档中的示例代码从此处可以获得。
现在,我想生成一个堆栈跟踪,以便查看应用程序崩溃的确切位置。这类似于当您将iPhone连接到Xcode时查看iPhone设备日志时会得到的内容: Sample crash report from the iphone device logs 我需要做什么才能使用PLCrashReporter生成这样一个漂亮的堆栈跟踪?
2个回答

17

该框架包含一个文本格式化器,在PLCrashReportTextFormatter.h中:

NSString *humanReadable = [PLCrashReportTextFormatter stringValueForCrashReport:report withTextFormat:PLCrashReportTextFormatiOS];
NSLog(@"Report: %@", humanReadable);

感谢您的回答。这会打印出堆栈跟踪。但是收到的堆栈跟踪仅包含内存地址。这不是我要找的。 - toom
1
你好,我尝试使用最新的PLCrashReporter来使用PLCrashReportTextFormatter,但它只给了我“应用程序特定信息”、“线程信息”和“二进制图像”,没有看到任何函数名称或行号。为什么会这样? - mkto
这通常是因为应用程序没有使用符号构建而导致的。这是发布版本的默认情况。查看“符号化iOS崩溃日志”。那应该会指引你正确的方向。(Kerni在他的回答中谈到了一些相关内容) - parKing
1
如何获取类名和方法名?我无法做到,请帮帮我。 - Apple
我在我的框架中找不到PLCrashReportTextFormatter.h文件。我已经通过Pods集成了PLCrashReporter。你能提供链接吗? - Qadir Hussain
显示剩余3条评论

3
您需要使用Xcode中的symbolicatecrash工具对崩溃报告进行符号化。这需要可用于创建崩溃报告的确切构建的dSYM包。关于如何执行此操作,StackOverflow上有多个讨论。
还有第三方服务可以自动完成此操作,包括收集崩溃报告并将它们按相似性分组,以及开源项目QuincyKit,其中包含一个PHP服务器部分,可帮助您收集崩溃报告并从您自己的Mac自动进行符号化。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接