首页 > 解决方案 > iOS崩溃日志不包含行号并且使用反汇编找不到符号

问题描述

我从 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:]

那么为什么它不起作用呢?以及如何获得坠毁的位置?

谢谢你。

标签: ioscrashcrashlyticslldb

解决方案


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

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

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

和这个 WWDC 会议:

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

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

如果 crashlytics 有其他格式的崩溃日志,那么他们大概也会提供一些工具来符号化他们的崩溃日志格式。也许查看他们的支持论坛以获取更多详细信息?


推荐阅读