You need to enable JavaScript to run this app.
文档中心
应用性能监控全链路版

应用性能监控全链路版

复制全文
下载 pdf
使用指南
Coredump
复制全文
下载 pdf
Coredump
Coredump是一种调试技巧,可以将崩溃时内存信息dump下来,之后可以通过LLDB进行线下调试。
常规的稳定性监控工具,只会捕获堆栈、寄存器、内存等等信息,能够解决大部分问题,但会丢失大部分现场信息,而Coredump可以将程序的所有信息dump下来,提供海量数据进行问题排查。
理论上,可以解决所有的Singal和Mach异常。
前提条件
  • 配置coredump采样率可以控制只对线上部分用户开启功能,默认采样率为0。
步骤一:新建工作空间
假定文件夹路径为~/Desktop/CoredumpCase
步骤二:下载物料
由于coredump的使用需要借助本地LLDB,因此需要将相关物料下载到本地,从而构建LLDB所需的环境。
下图为LLDB所需要的所有资料。下边会逐个介绍它们的获取方法。
图片
.app程序与符号表
以下是按照Products产物的方式进行演示的,如果您使用的是Archive或使用打包机,请根据您的情况自行获取。
  1. 在工程中,找到Products,右键单击产物 > Show in Finder。
  • 图片
  1. 将.app程序和符号表这两个文件拷贝到工作空间。
  • 图片
注意
  • 请不要修改.app程序和符号表的名称。
  • 请确保.app程序和符号表是匹配的。
  • .app程序UUID获取方法:dwarfdump --uuid ${appFilePath}/${appName}
  • 因此,获取APMInsight_iOS app的UUID方法为:
  • 图片
  • 符号表UUID获取方法:dwarfdump --uuid ${appFilePath}
  • 因此,获取APMInsight_iOS符号表的UUID方法为:
  • 图片
Crash文件
  1. 在崩溃详情页,下载崩溃日志。
  • 图片
  1. 执行以下命令, 对崩溃文件做二次处理。
  • cat ${crash_path} | jq -r '.data' | awk '{gsub(/\\n/,"\n")}1' > ${output_crash_path}/crash.txt
  • 假设从平台上下载后的文件路径为 ~/Downloads/20230228210309.txt 。那么二次处理Crash文件的方法为:
  • cat ~/Downloads/20230228210309.txt | jq -r '.data' | awk '{gsub(/\\n/,"\n")}1' > ~/Desktop/CoredumpCase/crash.txt
注意
  • 请保证二次处理后的文件名为crash.txt
  • 需要安装homebrew包管理工具,详情请参见homebrew官网
  • 需要配置jq命令:brew install jq
Coredump文件
  1. 在崩溃详情页 > 文件下载,找到Coredump文件。
  • 图片
  1. 将下载后的Coredump文件解压缩并命名为memorydump
  1. 将Coredump文件拷贝到工作空间。
注意
  • 请确保文件名为memorydump。
  • Coredump默认是不开启的,如需采集Coredump文件,请根据需要修改采样率。
如何确定哪个文件是我们所需的?
打开生成的crash.txt文件,找到Incident Identifier字段对应的值。
图片
在文件下载中,找到cd-${Incident Identifier's value}.zip,即为所需要的Coredump文件。
系统符号表
获取系统符号表的方式有很多,这里介绍一下如何从Xcode获取系统符号表。
当通过Xcode真机调试时,Xcode会从手机中下载系统符号表。存在路径为:~/Library/Developer/Xcode/iOS\ DeviceSupport,打开后为:
图片
注意
如果在本地找不到对应符号表,您可通过ipsw获取对应版本的系统符号表。
如何确定哪个文件是我们所需要的?
打开刚才生成的crash.txt文件,找到Code TypeOS Version字段对应的值。
图片
  • 如果Code Type为arm64,则${OS Version}为系统符号表。
  • 如果Code Type为arm64e,则${OS Version}${Code Type}为系统符号表。
  • 以上,请忽略${OS Version}的iOS字段。
  • 综上,打开15.5 (19F77),将Symbols拷贝到工作空间。
  • 图片
注意
  • 请确保只拷贝对应系统符号表下的Symbols文件夹。
  • 请不要修改Symbols中的结构,防止Coredump解析失败。
Coredump脚本
请根据Python版本,下载对应的Coredump脚本。加载后,请移动到工作空间。
查看Python的方法:Python3 --version
Python版本
Coredump脚本
3.9.6
spliceMemory.so
产物列表
完成以上操作后,工作空间如下图所示。
图片
步骤三:消费数据
通过LLDB运行Coredump
完成上述操作后,您可以执行以下步骤,开启lldb调试。
  1. cd到工作空间。
  1. 启动LLDB。
  1. 在LLDB状态下,加载Coredump脚本。
  • 图片
注意
当执行command script import spliceMemoryspliceMemory不要.so
调试技巧
开启Coredump后,可以使用LLDB指令来进行操作。
注意
调试技巧和在Xcode中执行命令一致。
调解演示图:
图片
最近更新时间:2026.02.10 19:56:23
这个页面对您有帮助吗?
有用
有用
无用
无用