- 文档首页
应用性能监控全链路版
用户指南
客户端监控
PC 端监控
常见问题
堆栈解析缺失或不准确
堆栈解析缺失或不准确
PC端崩溃基于breakpad提供的minidump_stackwalk工具解析,也就是APMPlus采用服务端栈回溯。相较于客户端栈回溯,准确性会差一些。
系统库的符号支持较少,目前无法拿到更准确的信息。以下针对业务侧的堆栈,所有类型问题都是以下两个原因:
连续堆栈之间没有调用关系
可能是因为栈内存信息被破坏,minidump_stackwalk只能基于现有信息去猜调用关系,可以切换到崩溃详情 > 错误堆栈 > Raw里确认堆栈的回溯方式。
堆栈的4种情况准确性如下:
- given as instruction pointer in context:准
- previous frame's frame pointer:准
- call frame info:这个基本准确,只有内存踩踏不准
堆栈解析符号无法和文件名和行号信息对应
已知inline符号支持不好。
有解析符号,但是没有文件名和行号信息
勉强符合预期。符号表中,符号信息分为两类:
- FUNC记录:记录了符号的起始地址和符号大小,可以找到对应的文件名和行号。
- PUBLIC记录:只记录了起始地址,没有行号数据和符号大小。
当前frame pointer解析后为PUBLIC记录,没有文件名和行号信息,还有一种情况是因为符号表解析方式不对,使用了strip符号的文件导出符号表,导致符号表缺失必要信息。
解析符号明显不对,偏移量超出合理值
大概率是上传的符号表有问题,缺失信息。
如果是Mac,请检查是否基于dSYM文件提取了.sym文件,dSYM文件里符号信息是最全的,macho文件一般都剪裁了符号,缺失了很多信息,请基于dSYM文件重新提取重新上传符号表。
最近更新时间:2025.03.07 14:58:03