iOS崩溃日志不包含行号,使用反汇编无法找到符号



我从Crashlytics那里得到了一些崩溃日志。像

App -[Socket init:queue:] + 508
App -[SocketK recv:error:] + 5508
App xxx_accept + 5296
App xx_accept + 1680
App xx_input + 48

我从如何找到iOS的LLDB中堆栈跟踪的地址以获得真实位置找到了解决方案。

当我使用disassemble --name找到符号时,它可能工作,也可能不工作。例如,我可以找到xxx_accept,但不能找到-[Socket init:queue:]

为什么它不起作用呢?如何得到坠毁的位置?

谢谢。

崩溃日志文件必须存储崩溃时加载的二进制文件列表及其加载地址。"符号化"过程崩溃日志包括查找应用程序的调试信息(dSYM),并为它们分配适当的地址以形成崩溃状态的重建,然后查询此重建的地址->符号名称翻译。

我不是很熟悉崩溃分析,但如果他们使用标准的苹果格式的崩溃日志,那么这个参考可能会有所帮助:

https://developer.apple.com/documentation/xcode/adding-identifiable-symbol-names-to-a-crash-report

和本次WWDC会议:

https://developer.apple.com/videos/play/wwdc2021 - 10211

可能也很有用。至少他们会给你一些背景。

如果crashlytics有一些其他的崩溃日志格式,那么他们可能也会提供一些工具来表示他们的崩溃日志格式。也许可以看看他们的支持论坛了解更多细节?

最新更新