首页/新闻资讯/正文详情

Perfetto 故障排查指南:从数据源到分析层的完整排查路径

发布时间:2026/9/24 17:09:36 来源:云帆数科 栏目:资讯中心
Perfetto 故障排查指南:从数据源到分析层的完整排查路径
Perfetto 故障排查指南从数据源到分析层的完整排查路径【免费下载链接】perfettoProduction-grade client-side tracing, profiling, and analysis for complex software systems.项目地址: https://gitcode.com/GitHub_Trending/pe/perfetto你按流程跑了一次追踪拿到 .pftrace打开 UI 却发现关键轨道是空的或者堆转储怎么都解析不了。这类 Perfetto 故障排查其实有固定套路一条 trace 要经过数据源采什么、采集权限、buffer、触发器、分析trace_processor 和 UI三层绝大多数失败都能归到其中一层。先判断故障在哪一层再逐层深挖比盲目换参数快得多。先判断故障属于哪一层数据源、采集还是分析别急着改配置先做一次最小验证文件能不能被打开打开后目标表里有没有行。下面这条命令用 trace_processor 直接数行数确认数据源对应的表是否真的有数据tools/trace_processor trace.pftrace -q SELECT name, count(*) FROM thread GROUP BY name文件打不开问题在文件本身或分析工具版本能打开但表是空的按数据源层、采集层的顺序排查。症状大概率所在层trace_processor 报错、打不开文件文件 / 分析层能打开但目标表 0 行数据源层 / 采集层有数据但堆栈全是地址符号解析分析层堆转储没抓到 / 抓不到 OOM 时刻采集层触发器、权限数据源层配置没生效与版本门槛确认数据源在配置里且系统版本支持不同数据源有硬性版本要求heapprofd 需要 Android 10java_hprof 需要 Android 11OOM 自动转储需要 Android 14。设备版本不满足时配置写得再对也是 0 行这是内存分析失败最常见的一个原因。确认版本后再看数据源名字和 config 字段是否拼写正确、有没有写进实际的 trace_config 里。把 JSON 事件换成 TrackEvent如果你还在用 B/E 这类 JSON 事件建议把采集端切到 TrackEvent。这段配置启用 track_event 数据源并收集所有类别data_sources: { config { name: track_event track_event_config { enabled_categories: * } } }改采集端的事件发出方式为 TrackEvent后面分析层的一大类解析问题就不存在了转换方法可参考 docs/reference/synthetic-track-event.md。检查过滤条件有没有把目标挡在外面ftrace_events、atrace_apps、process_cmdline 这类字段写错一个字符整条数据源就静默失效。特别提醒 process_cmdlineAndroid 13 起匹配规则变了12 及以下按规范化后的字符串精确比较。用adb shell ps核对一遍实际命令行能排除掉大部分配了却没数据的问题。采集层权限、buffer 与触发器确认目标应用可被 profile 的两种方式采集堆数据的前提是系统允许 attach 目标进程。两种方式满足其一即可应用是 debuggable 的或者在 manifest 里显式标记 profileableapplication android:profileabletrue /release 包默认关 debuggable需要补上这行并重装应用否则 heapprofd、java_hprof 一律采不到。Perfetto OOM 堆转储自动捕获Android 14 上可以让 Java 进程 OOM 时自动抓转储。这段配置启用 android.java_hprof.oom 数据源trigger_config 采用 START_TRACING 模式收到系统 OOM 信号才开始采一小时超时停止时留 500ms 余量cat EOF | adb shell perfetto -c - --txt -o /data/misc/perfetto-traces/oome.pftrace buffers: { size_kb: 512288 fill_policy: DISCARD } data_sources: { config { name: android.java_hprof.oom java_hprof_config { process_cmdline: * } } } trigger_config { trigger_mode: START_TRACING trigger_timeout_ms: 3600000 triggers { name: com.android.telemetry.art-outofmemory stop_delay_ms: 500 } } EOF转储没抓到时先查 trigger_timeout_ms 是不是在 OOM 发生前就超时了再核对 trigger 的 name 与设备实际发出的系统事件是否一致完整用法见 docs/getting-started/local-android-trace-recording.md。Java 堆转储失败与解析问题手动抓转储用tools/java_heap_dump -n com.android.systemui这类命令dump 失败多与设备剩余存储空间不足、进程内存状态不稳有关。解析侧可以用 UI 的 Focus 功能按对象类型过滤先缩小范围再查别对着全量图找。界面长这样Perfetto 原生堆符号解析失败的三种原因⚠️ 火焰图上一片裸地址时按这个顺序查设备上缺少符号信息、host 端 heap_profile 工具版本过旧、设备与工具架构不匹配32/64 位。工具更新到与设备 perfetto 版本一致并确认目标 so 带符号表是绝大多数场景的解法详见 docs/data-sources/native-heap-profiler.md。实战相机 App 拍照后内存持续增长最终被 LMK 杀掉现象是相机进程每次拍照后 RSS 只涨不降最后触发 LMK。排查按层走一遍采集层先让 trace 能看到杀这个动作本身。这段配置监听 lowmemory_kill 事件并用 atrace 跟踪 lmkd 进程oom_score_adj 的变化则交给 process_stats 数据源按周期采样data_sources: { config { name: linux.ftrace ftrace_config { ftrace_events: lowmemorykiller/lowmemory_kill atrace_apps: lmkd } } }trace 里有 RSS 曲线但没有 kill 事件时多半是 ftrace_events 没列上 lowmemorykiller或内核不支持该事件。数据源层在拍照操作前后分别打内存快照process_stats 计数器 原生堆 / Java 堆转储确保泄漏区间被完整覆盖。分析层对比两份快照的分配差异用 Focus 过滤 notification 相关对象最终定位到通知子系统的对象只入不出泄漏点随之浮出。完整的相机案例 walkthrough 在 docs/case-studies/memory.md。分析层数据对不上与格式坑JSON 格式追踪的兼容坑JSON 是遗留格式Perfetto 只做尽力而为的解析重叠的 B/E/X 事件显示不正确、部分特性直接不支持。症状是数据明明采了UI 里却对不上或缺失。解法和前面一致采集端换 TrackEvent短期无法改动时确认用与录制端匹配版本的分析工具打开。用最小 SQL 验证分析结果分析层排错的关键动作是写最小 SQL 对账比如SELECT name, count(*) FROM slice看总量是否符合预期。另一类高频问题是录制端与分析端版本不匹配trace 里新增的表和字段在旧版 trace_processor 里根本不存在升级分析工具通常直接解决参见 docs/analysis/trace-processor.md。故障速查清单症状所在层首先检查JSON trace 事件重叠、字段缺失分析层采集端改 TrackEventtrace_processor 打不开文件文件 / 分析层文件完整性、工具版本目标表 0 行数据源层数据源名、系统版本、过滤条件heapprofd / java_hprof 采不到采集层debuggable 或 profileableOOM 转储没抓到采集层trigger 超时时间、trigger name原生堆全是裸地址符号解析工具版本、架构、符号表堆转储解析慢 / 失败分析层存储空间、Focus 过滤RSS 只涨不降、进程被杀系统侧ftrace lowmemory_kill lmkd【免费下载链接】perfettoProduction-grade client-side tracing, profiling, and analysis for complex software systems.项目地址: https://gitcode.com/GitHub_Trending/pe/perfetto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

FluentValidation 测试扩展指南:用 TestValidate 与 TestHelper 编写健壮的校验器单元测试
FluentValidation 测试扩展指南:用 TestValidate 与 TestHelper 编写健壮的校验器单元测试

后端 【免费下载链接】FluentValidation A popular .NET validation library for building strongly-typed validation rules. 项目地址: https://gitcode.com/gh_mirrors/fl/FluentValidation 点击查看 免费下载 导读 本文围绕 FluentValidation 官方文档 docs/t… · 2026/9/24 17:09:36

palera1n 适配 iPad mini 4:从 DFU 到越狱环境落地的完整实操
palera1n 适配 iPad mini 4:从 DFU 到越狱环境落地的完整实操

palera1n 适配 iPad mini 4:从 DFU 到越狱环境落地的完整实操 【免费下载链接】palera1n Jailbreak for A8 through A11, T2 devices, on iOS/iPadOS/tvOS 15.0, bridgeOS 5.0 and higher. 项目地址: https://gitcode.com/GitHub_Trending/pa/palera1n paler… · 2026/9/24 17:09:36

shadcn-vue InputGroup 组件完全指南:为输入框与文本域构建前缀、后缀与操作区
shadcn-vue InputGroup 组件完全指南:为输入框与文本域构建前缀、后缀与操作区

shadcn-vue InputGroup 组件完全指南&#xff1a;为输入框与文本域构建前缀、后缀与操作区 【免费下载链接】shadcn-vue Vue port of shadcn-ui 项目地址: https://gitcode.com/gh_mirrors/sh/shadcn-vue InputGroup 是 shadcn-vue 中用于在 <Input />、<Texta… · 2026/9/24 17:09:30

基于K-Means与Spark的气象数据深度挖掘与可视化分析系统 基于大数据的体感温差与能见度分层可视化分析研究
基于K-Means与Spark的气象数据深度挖掘与可视化分析系统 基于大数据的体感温差与能见度分层可视化分析研究

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Spark、hadoop、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题… · 2026/9/24 17:49:12

开源 UniEmployee:一个能干活、能审批、出错可追溯的 AI 数字员工平台
开源 UniEmployee:一个能干活、能审批、出错可追溯的 AI 数字员工平台

你花了一个月做出来的 AI Agent&#xff0c;上线后用户问“能退款吗”&#xff0c;它秒回“当然可以”。第二天老板找上门&#xff1a;谁批准它退的&#xff1f;UniEmployee 就是为了解决这类问题。企业要的 AI&#xff0c;首先得懂规矩&#xff0c;光会聊天远远不够。 我们最… · 2026/9/24 17:49:12

iCON 艾肯 USB 声卡驱动异常如何下载?Windows 音频排查流程
iCON 艾肯 USB 声卡驱动异常如何下载?Windows 音频排查流程

现象&#xff1a;iCON/艾肯 USB 声卡驱动安装、Windows默认设备、ASIO缓冲区或直播软件输入输出配置异常&#xff0c;导致系统无声、录音无输入、控制面板不可用或直播延迟。排查顺序应从官网入口和设备型号开始&#xff0c;而不是先下载通用驱动包。 1. 官网与下载入口边界 入… · 2026/9/24 17:49:05

工程投标业务复盘|评标视角 7 类高频标书规范性缺陷,以及自动化校验落地思路
工程投标业务复盘|评标视角 7 类高频标书规范性缺陷,以及自动化校验落地思路

摘要&#xff1a;站在评标评审视角梳理投标文件 7 大类高频低级错误&#xff0c;区分人工失误与业务主观风险&#xff0c;分享中小企业标书 AI 校验落地实践&#xff0c;面向标书编制、招投标业务、工程信息化从业者。在招投标业务当中&#xff0c;项目落选常常被简单归因于技术… · 2026/9/24 17:49:05

人生过往不究的术语大全的庖丁解牛
人生过往不究的术语大全的庖丁解牛

总纲 人生的过往&#xff0c;相当于程序里已经执行完毕、不可回滚的历史任务日志。过往不究&#xff0c;不是删除历史记录&#xff0c;而是不再把已经结束的事件持续加载进当前心智模型参与实时运算。 很多人内耗的根源&#xff0c;是反复读取旧日志、回放历史脏输入&#xff0… · 2026/9/24 17:49:05

我最近开始看 AI 交易员实盘模拟,不是为了抄作业,而是为了拆交易逻辑
我最近开始看 AI 交易员实盘模拟,不是为了抄作业,而是为了拆交易逻辑

这几年炒股下来&#xff0c;我越来越觉得&#xff0c;普通散户最大的问题不是信息少&#xff0c;而是信息太乱。 每天看盘时&#xff0c;涨幅榜、快讯、题材、龙虎榜、资金流、K线&#xff0c;全都在眼前跳。看得越多&#xff0c;越容易产生一种错觉&#xff1a;好像自己掌握了… · 2026/9/24 17:49:05

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介&#xff1a;这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源&#xff0c;围绕YOLOv8实现渔船作业监控系统&#xff0c;可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件&#xff0c;约24.21MB&#xff0c;以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介&#xff1a;面向时间序列数据建模的一维卷积神经网络完整实现&#xff0c;适合深度学习入门者及需要快速验证时序模型的研究者&#xff0c;能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小&#xff0c;只有3KB&#xff0c;内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L&#xff0c;而是舌尖上的L最近在几个方言群和语音教学社群里&#xff0c;反复看到有人发一句&#xff1a;“也说字母L&#xff1a;柔软的长舌”。初看以为是英语发音课笔记&#xff0c;点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码