一条命令背后的“打听”真相 adb shell dumpsys SurfaceFlinger --latency “SurfaceView[...](BLAST)#0“

发布时间:2026/10/15 4:14:18
一条命令背后的“打听”真相 adb shell dumpsys SurfaceFlinger --latency “SurfaceView[...](BLAST)#0“
用大白话讲这条命令是怎么跑起来的先不管技术名词用一个打听消息的故事来讲。一、一句话版本你在电脑上写了一张纸条托人送进手机手机里有人跑腿去问管屏幕的部门那个部门翻出记录本抄一份给你送回来。就这么简单。下面把这个故事展开。二、故事版假设手机是一家大公司你在公司外面电脑上想知道“游戏画面最近每一帧是几点几分显示到屏幕上的”这个信息只有公司里的显示部SurfaceFlinger知道。你进不去公司于是只能托人传话你电脑 │ ① 写一张纸条去显示部查一下『游戏画面』的出帧记录 ▼ 快递员adb │ ② 把纸条通过 USB 线送到公司门口 ▼ 公司前台adbd │ ③ 收下纸条给你发一张维修工工牌shell 身份 ▼ 前台秘书手机里的 sh │ ④ 把纸条念一遍看明白要干嘛然后叫来跑腿小哥 ▼ 跑腿小哥dumpsys │ ⑤ 查公司通讯录找到显示部在哪 ▼ 显示部经理SurfaceFlinger │ ⑥ 看一眼工牌是维修工可以给你看 │ ⑦ 翻开记录本找到游戏画面那一页 │ ⑧ 把最近 128 帧的时间抄下来 ▼ 原路送回经理 → 小哥 → 前台 → 快递员 → 你的屏幕上这就是整条命令的运行过程。三、对照命令看每个词是谁adb shell dumpsys SurfaceFlinger --latency SurfaceView[...](BLAST)#0 ───────── ─────── ────────────── ───────── ─────────────────────────── 快递员前台 跑腿小哥 去找哪个部门 查什么 查哪一页哪个图层命令里的词故事里的角色做什么adb快递员把电脑上的命令送进手机shell前台 秘书用维修工身份在手机里执行命令dumpsys跑腿小哥专门负责去各部门要报告SurfaceFlinger显示部管所有画面上屏的部门--latency“我要看出帧时间记录”告诉显示部要哪种报告SurfaceView...#0记录本上的某一页游戏画面这个图层的名字四、三个关键问题用故事解释问题 1为什么普通 APP 查不到adb 能查到显示部经理会先看工牌 普通 APP 的工牌 → 租户不能看别人的东西 → 拒绝 adb 的工牌 → 维修工用户本人授权过的 → 放行 ✓这个维修工工牌就是你在手机上打开USB 调试并点了允许后得到的。问题 2为什么图层名一定要加引号有时还要加两层因为纸条会被读两次第 1 次你电脑上的命令行先读一遍 第 2 次手机里的秘书再读一遍图层名里有( )这种括号秘书看到括号会以为是特殊指令直接看不懂、报错。引号的作用就是告诉读的人“这一串是一个名字别乱理解。”但麻烦在于每读一次引号就被拆掉一层。只加一层引号 电脑读完 → 引号被拆掉 → 秘书看到裸露的括号 → 报错 ✗ 加两层引号信封套信封 电脑读完 → 拆掉外层 → 里面还剩一层 秘书读完 → 拆掉内层 → 拿到完整的名字 ✓就像寄东西外面包一层是给快递员拆的里面再包一层是给收件人拆的。所以实际要这样写adb shelldumpsys SurfaceFlinger --latency SurfaceView[...](BLAST)#0# ↑外层给电脑拆 ↑内层给手机拆问题 3为什么名字写错一点就查不到显示部经理翻记录本是一字一字对名字的不会猜你想找哪个你写SurfaceView[...]#0 本子上是SurfaceView[...](BLAST)#0 → 少了 (BLAST)对不上 → 什么都不给你只给一行刷新周期所以第一步要先用--list把所有图层名抄下来挑出正确的那个原样复制过来。五、显示部的记录本长什么样显示部给每个图层准备了一个只有 128 行的小本子┌──────────────────────────────┐ │ 屏幕刷新周期16.67ms60Hz │ ← 第一行永远是这个 ├──────────────────────────────┤ │ 第 1 帧计划时间 实际上屏 画完时间 │ │ 第 2 帧... │ │ ... │ │ 第 128 帧... │ └──────────────────────────────┘ 写满了就从头覆盖最旧的每来一帧画面就记一行本子只有 128 行60 帧的游戏大约2 秒就写满一轮所以 PerfDog 这类工具要每隔一会儿就去抄一次不然旧的记录就被覆盖了抄回来之后用实际上屏时间前后相减就知道每一帧显示了多久从而算出 FPS 和卡顿。六、总结1. 你在电脑写命令写纸条 2. adb 把命令送进手机快递员 3. 手机用维修工身份执行前台发工牌 4. dumpsys 去找 SurfaceFlinger跑腿小哥找显示部 5. SurfaceFlinger 检查身份 → 按名字找到游戏图层 → 抄出最近 128 帧时间 6. 结果原路送回你的电脑屏幕两个最容易踩的坑✓ 纸条会被读两次 → 图层名要加两层引号 ✓ 名字是一字一字比对的 → 必须从 --list 里原样复制一句话这条命令就是托人进手机去管屏幕的部门把游戏画面最近 128 帧的上屏时间抄出来带回给你。