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

iOS crash log does not contain line number and can not find symbol using disassemble

我从 Crashlytics 获得了一些崩溃日志。喜欢

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

我从How can I find the address of a stack trace in LLDB for iOS中找到了得到真实位置的解决方案。

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

那么为什么它不起作用?以及如何获取崩溃位置?

谢谢。

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

我对 crashlytics 不是很熟悉,但如果他们使用标准的 Apple 格式作为崩溃日志,那么参考资料可能会有所帮助:

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

和这个 WWDC session:

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

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

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