iOS 崩溃日志解析命令整理

在友盟后台看到一处崩溃信息,发现友盟后台未对其进行解析,手动使用命令解析后,让Ai整理了崩溃日志命令整理的文档在下方,便于后期查阅。

1. 准备工作 - 验证文件匹配性

检查 UUID 匹配

1
2
3
4
5
# 检查二进制文件 UUID
dwarfdump --uuid MyApp.app/MyApp

# 检查 dSYM 文件 UUID
dwarfdump --uuid MyApp.app.dSYM/Contents/Resources/DWARF/MyApp

2. 自动化解析方法

使用 symbolicatecrash(推荐)

1
2
3
4
5
6
7
8
# 找到工具位置
find /Applications/Xcode.app -name symbolicatecrash -type f

# 设置开发环境
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"

# 解析整个崩溃日志文件
symbolicatecrash crash_log.crash MyApp.app.dSYM > symbolicated_crash.crash

3. 手动解析方法

使用 atos 命令解析单个地址

1
2
3
4
5
6
7
8
# 使用 dSYM 文件解析(推荐)
atos -o MyApp.app.dSYM/Contents/Resources/DWARF/MyApp -l <load_address> <crash_address>

# 使用二进制文件解析
atos -o MyApp.app/MyApp -l <load_address> <crash_address>

# 示例
atos -o MyApp.app.dSYM/Contents/Resources/DWARF/MyApp -l 0x100000000 0x100001234

批量解析多个地址

1
2
3
4
5
6
# 批量解析脚本
atos -o MyApp.app.dSYM/Contents/Resources/DWARF/MyApp -l <load_address> << EOF
0x100001234
0x100002345
0x100003456
EOF

4. 辅助诊断命令

查看二进制文件信息

1
2
3
4
5
# 查看支持的架构
lipo -info MyApp.app/MyApp

# 查看文件类型
file MyApp.app/MyApp

查看调试符号信息

1
2
# 查看详细的调试信息
dwarfdump MyApp.app.dSYM

5. 完整解析流程

  1. 验证匹配性:使用 dwarfdump --uuid 确认二进制文件和 dSYM 文件的 UUID 一致
  2. 选择解析方法
    • 自动解析:使用 symbolicatecrash 处理整个崩溃日志
    • 手动解析:使用 atos 解析特定地址
  3. 执行解析:根据崩溃日志中的 load address 和 crash address 进行解析
  4. 分析结果:查看解析后的函数名、文件名和行号信息

这样整理后,您可以根据具体需求选择合适的解析方法。