详细信息中展示了聚合到当前崩溃名称中的所有错误实例,每条实例代表一个发生此错误的设备。查看崩溃/卡顿/异常/自定义详细信息步骤一致,下文以查看崩溃详细信息为例。
操作步骤
登录EMAS管理控制台,选择应用监控,点击进入,进入到应用监控控制台。
在页面左侧导航栏选择应用监控-崩溃分析,选择崩溃或卡顿或异常。
设置需要的筛选项,单击查询。
在崩溃列表位置处,单击某条崩溃名称,可进入崩溃聚合分析页面。
页面介绍
详细信息页面左侧展示同一崩溃名称中的所有错误实例。单击某一条数据,右侧展示此条崩溃信息的基本信息、错误堆栈、现场数据、ConsoleLog、自定义日志、进程信息、符号表等相关信息。

页面功能项
页面提供重新符号化和搜索个例功能。
重新符号化:对符号化进行重置。
搜索个例:崩溃个例按照设备的Utdid搜索。

基本信息
基本信息显示每条实例代表一个发生此错误的设备信息。
参数 | 说明 |
Utdid | 发生此类崩溃设备的Utdid。 |
用户ID | 发生此类崩溃设备的用户ID。 |
应用版本 | 发生此类崩溃设备的App版本。 |
用户昵称 | 发生此类崩溃设备的用户昵称。 |
设备名称 | 发生此类崩溃设备的设备名称。 |
系统版本 | 发生此类崩溃设备的系统版本。 |
上报时间 | 发生此类崩溃设备的上报时间。 |
崩溃时间 | 发生此类崩溃设备的崩溃时间。 |
启动时间 | 发生此类崩溃设备的启动时间。 |
启动阶段 | 若问题发生在启动5s内,则为启动阶段。 |
错误堆栈
错误堆栈详细展示当前崩溃发生时上报数据的崩溃堆栈日志详情信息,是分析解决崩溃问题最直接的信息。
未上传符号表,展示的是原始堆栈;上传符号表解析后,展示还原后的堆栈。
如果符号表或解析有误,可在符号表界面单击重新符号化。
还原后堆栈默认展开崩溃发生的线程堆栈,如当前线程堆栈无法定位问题,可以点击展开调用栈来查看其他线程堆栈。
支持堆栈搜索、完整堆栈的下载,完整堆栈和线程堆栈的复制功能。

卡顿火焰图/堆栈树/时间片
卡顿的错误堆栈,支持三种不同的可视化呈现方式,包括火焰图、堆栈树和时间片。
建议开发者排查卡顿问题时,结合卡顿总耗时,关键堆栈耗时,以及叶子结点最大耗时这三个关键耗时信息,以及三张视图,分析定位卡顿问题。
当前抓栈的间隔为300ms。

火焰图X轴为相对时间轴,Y轴为调用深度,函数块宽度反映执行时长。颜色区分系统和业务堆栈。

堆栈树如上图。
时间片分析,按采集的时间顺序展示,相邻且内容完全相同的调用栈片段自动合并。
现场数据
当前选项还原了此条崩溃信息的现场,包括基础信息、内存信息和自定义数据。
基础信息
参数 | 说明 |
appKey | 接入崩溃分析时使用的AppKey。 |
应用版本 | 接入崩溃分析时传入的应用版本。 |
构建号 | 在Android系统中指VersionCode,iOS系统中指BundleVersion。 |
渠道 | 接入崩溃分析时传入的渠道标识。 |
上报时间 | 上报时间,服务端时间。 |
启动时间 | App启用时间,客户端时间。 |
崩溃时间 | 崩溃发生时间,客户端时间。 |
品牌 | 崩溃发生设备的品牌。 |
机型 | 崩溃发生设备的型号标识。 |
操作系统 | 崩溃发生时设备的操作系统。 |
操作版本 | 崩溃发生时设备的操作系统版本。 |
运营商/网络 | 崩溃发生时设备接入的运营商和网络信息。 |
国家/地区 | 崩溃发生时设备所处的地理位置,根据IP推算。 |
省份/地市 | 崩溃发生时设备所处的省份、地市。 |
用户IP | 崩溃发生时设备的公网IP。 |
分辨率 | 崩溃发生设备的屏幕分辨率。 |
页面 | 崩溃发生时App打开的页面。 |
是否是前台 | 崩溃是否发生在前台进程。 |
是否是主线程 | 崩溃是否发生在主线程。 |
进程名 | 崩溃进程的名称。 |
父进程名 | 崩溃进程的父进程名称。 |
CPU架构 | 崩溃发生时设备所用的CPU架构。 |
语言 | 崩溃发生时设备所用的语言。 |
内存信息
上报样本的现场内存状态,展示了发生崩溃时的存储信息。
Android
参数 | 说明 |
dalvikPss | Java堆部分的按比例分配后内存使用量(PSS),用于衡量Java堆实际消耗的物理内存。 |
dalvikPrivateDirty | Java堆部分的私有脏页内存,本进程独享且已被修改。 |
dalvikSharedDirty | Java堆部分的共享脏页内存,被多个进程共享且已被修改。 |
summary.javaHeap | Java堆部分的内存总量,用于衡量进程分配给Java堆的内存消耗。 |
nativePss | Native堆部分的按比例分配后内存使用量(PSS),用于衡量Native堆实际消耗的物理内存。 |
nativePrivateDirty | Native堆部分的私有脏页内存,本进程独享且已被修改。 |
nativeSharedDirty | Native堆部分的共享脏页内存,被多个进程共享且已被修改。 |
summary.nativeHeap | Native堆部分的内存总量,用于衡量进程分配给Native堆的内存消耗。 |
otherPss | 其他部分的按比例分配后内存使用量(PSS),用于衡量除Java和Native之外其他模块(资源映射、第三方库等)实际消耗的物理内存。 |
otherPrivateDirty | 其他部分的私有脏页内存,本进程独享且已被修改。 |
otherSharedDirty | 其他部分的共享脏页内存,被多个进程共享且已被修改。 |
summary.privateOther | 其他部分的私有内存总量。 |
summary.code | 代码段内存使用量,用于衡量应用代码段和只读数据等的内存消耗。 |
summary.stack | 栈内存使用量,用于衡量进程或线程栈的内存消耗。 |
summary.graphics | 图形相关内存使用量,用于衡量进程占用的 OpenGL 显存、SurfaceFlinger 等图形模块的内存消耗。 |
summary.system | 系统相关内存使用量,用于衡量如 ashmem、binder、ION 等系统分配的内存消耗。 |
summary.totalPss | 进程全部内存的 PSS 总量。(等价于totalPss) |
summary.totalSwap | 进程使用的 Swap 空间总量。 |
totalPss | 进程全部内存的 PSS 总量。 |
totalSwappablePss | 进程全部可交换内存的 PSS 总量。 |
totalPrivateClean | 全部内存中的私有干净页内存,本进程独享且未被修改。 |
totalPrivateDirty | 全部内存中的私有脏页内存,本进程独享且已被修改。 |
totalSharedClean | 全部内存中的共享干净页内存,被多个进程共享且未被修改。 |
totalSharedDirty | 全部内存中的共享脏页内存,被多个进程共享且已被修改。 |
iOS
参数 | 说明 |
active | 当前系统中被活跃使用的内存量,以字节为单位。 |
inactive | 当前系统中被标记为非活跃使用的内存量,以字节为单位。 |
wired | 当前系统中被固定使用的内存量,以字节为单位。 |
free_mem | 当前系统中未被使用且可立即分配的内存量,以字节为单位。 |
total_mem | 当前设备的物理内存总量,以字节为单位。 |
virtual | 当前所占用的虚拟内存总量,以字节为单位。 |
resident | 当前驻留在物理内存中的实际内存量,以字节为单位。 |
footprint | 应用程序在物理内存中实际占用的总内存量,以字节为单位。 |
HarmonyOS NEXT
参数 | 说明 |
pss | Proportional Set Size,实际使用的物理内存,并根据共享库的引用次数进行比例分配。 |
rss | Resident Set Size,实际使用物理内存,包括共享库占用的内存。 |
vss | Virtual Set Size,虚拟耗用内存,包括共享库占用的内存。 |
sys_avail_mem | 系统可用的内存量。 |
sys_free_mem | 系统空闲内存量。 |
sys_total_mem | 系统总内存量。 |
自定义数据
展示崩溃发生时通过SDK回调来上报的自定义字段的属性,以协助应用实现自定义分析。
支持在筛选项中通过自定义维度筛选该部分数据。

页面追踪
展示崩溃前用户的页面操作,按照时间距离崩溃由近及远顺序展示。

Consolelog
支持安卓端和鸿蒙端。
展示崩溃发生前后上报样本的现场控制台数据日志。

自定义日志
展示崩溃发生时通过SDK回调来上报的自定义日志。
接入远程日志后,点击回捞该设备日志,将快速创建日志回捞任务。
进程信息
仅安卓端崩溃上报该信息,iOS和鸿蒙端不上报。
展示崩溃发生时与进程相关的信息,包括Maps信息、Meminfo信息、进程状态、FD信息。
Maps信息展示用户进程运行时的内存映射,能够查看到当前进程空间的映射情况。支持通过地址和访问权限来过滤筛选指定的内存段。
Meminfo信息展示详细内存使用统计,用于发现内存分配异常,优化内存使用。
内存统计维度
位于统计表的横轴,用于描述内存分页的物理属性及共享状态。
参数
说明
Pss Total
按比例分配的物理内存占用。应用实际消耗的物理内存总量,包含应用私有内存及按比例分摊的共享内存。
Private Dirty
私有脏内存。应用独占且已被修改的物理内存。无法被系统直接回收,是进程占用的核心成本。
Private Clean
私有干净内存。应用独占但未修改的物理内存。系统在压力大时可直接回收。
SwapPss Dirty
按比例分配的交换空间占用。应用被交换至 ZRAM 或压缩存储空间的内存分摊量。
内存分区
位于统计表的纵轴,用于描述内存占用的逻辑归属来源。
参数
说明
Native Heap
原生堆内存。C/C++ 代码通过 malloc/new 申请的内存,包含 Android 8.0+ 的 Bitmap 像素数据。
Dalvik Heap
Java 堆内存。虚拟机分配给 Java/Kotlin 对象的内存空间。
Dalvik Other
虚拟机其他开销。虚拟机运行所需的内部结构内存,包含 JIT 代码缓存及 GC 管理数据。
Stack
线程栈。应用内所有活跃线程运行所需的栈空间总和。
Cursor
数据库游标。SQLite 数据库查询时用于存储结果集的缓存区域。
Ashmem
匿名共享内存。Android 系统特有的匿名共享内存机制(Ashmem)分配的空间,用于跨进程大数据传输。
Gfx dev
图形驱动映射。显卡驱动程序映射到进程空间的内存区域,通常用于与 GPU 进行图形数据交互。
Other dev
其他设备映射。除显卡驱动外,其他硬件驱动程序映射到进程空间的内存区域。
.so mmap
原生库映射。应用加载的 C/C++ 动态链接库(.so 文件)在内存中的映射。
.jar mmap
Java 库映射。应用加载的 Java 归档文件(.jar 文件)在内存中的映射。
.apk mmap
安装包映射。应用安装包文件(.apk)及其内部资源在内存中的映射。
.ttf mmap
字体映射。应用加载的字体资源文件(.ttf 或 .otf)在内存中的映射。
.dex mmap
字节码映射。Dalvik 虚拟机执行的字节码文件(.dex)在内存中的映射。
.art mmap
ART 镜像映射。ART 虚拟机预加载的类信息及对象镜像(Boot Image)在内存中的映射。
.oat mmap
编译代码映射。经过 AOT 编译后的机器码文件(.oat)在内存中的映射。
Other mmap
其他文件映射。应用通过 mmap 映射的除上述类型外的其他文件或内存区域。
EGL mtrack
EGL 内存统计。显卡驱动程序上报的图形缓冲区(Surface)及显示内存占用。
GL mtrack
OpenGL 内存统计。显卡驱动程序上报的纹理(Texture)及顶点缓冲区内存占用。
Other mtrack
其他内存统计。驱动程序上报的、未归类到 EGL 或 GL 的其他硬件内存占用。
Unknown
未知映射。无法被系统明确识别分类的匿名内存映射。
Total
内存占用总计。上述所有分区在各指标维度的物理占用总和。
进程状态展示崩溃时进程状态的详情列表。
FD信息展示崩溃发生时FD使用状态。
参数
说明
当前已使用FD数
用于判断当前是否处于 FD 耗尽边缘。
进程最大可用FD数
参考基准。
占用率
计算公式:当前已使用FD数/进程最大可用FD数。
FD类型
归类名称。
数量
该分类下的FD数量。
占比
数量/当前已使用FD数 * 100%。
详情
该分类下所有 FD 的原始链接信息。
符号表
符号表文件上传到崩溃分析控制台,可以使用符号表文件解混淆崩溃调用栈,便于问题分析和解决。
符号表支持重新上传和下载。