故障发生时,最快的定位方式不是问“你刚才点了什么”,而是看失败瞬间的截图、日志和设备状态。留痕要在平时设计好,出事后再补通常已经晚了。
三件套:截图、logcat、设备状态
- 截图:证明当时屏幕是什么样;
- logcat:证明系统或应用发生了什么;
- 设备状态:电量、网络、前台应用、存储、温度。
三者时间要对齐,否则无法还原顺序。
截图
单台:
adb exec-out screencap -p > screen_20261105_101500.png
批量:
- 按设备序列号循环;
- 文件名带时间、序列号、任务 ID;
- 保存到按日期分的目录;
- 失败任务自动截图,不要只截成功。
诺程投屏提供截图快捷键,AI 任务失败时可查看日志与截图;日常排障仍建议保留独立的截图目录。

logcat
- 全量:
adb logcat -v time -d > log.txt - 清空后复现:
adb logcat -c,再执行操作 - 按崩溃过滤:
adb logcat -v time -d AndroidRuntime:E *:S - 按进程:先
adb shell pidof 包名,再adb logcat --pid=PID - ANR:
adb shell dumpsys activity anr,或拉取 traces,需要权限
日志会包含账号、手机号、令牌,保存和分享前要脱敏。
设备状态
- 电量与温度:
adb shell dumpsys battery - 前台应用:
adb shell dumpsys window | grep mCurrentFocus - 存储:
adb shell df -h /data - 网络:
adb shell ip addr,必要时 ping - 系统版本:
adb shell getprop ro.build.version.release
把这些固化成脚本,每次故障一键采集。
时间同步
电脑与手机时间不一致,日志顺序会错乱。批量设备开启自动时间同步,采集时记录电脑时间作为基准。
批量采集脚本的思路
- 读取设备列表;
- 逐台创建目录,按日期和序列号;
- 依次执行截图、logcat、状态命令;
- 记录失败设备;
- 打包压缩,按任务 ID 命名。
脚本要注意串行或并发,几十台同时拉日志会拖慢 adb。
留存与隐私
- 只留排障必需的信息;
- 账号、手机号、聊天内容打码;
- 设定保存周期,到期删除;
- 传输用内网或加密通道;
- 不要把日志上传到不明第三方。
复盘模板
- 现象:哪台、什么时候、什么任务;
- 影响:失败范围、是否可重试;
- 证据:截图、日志、状态;
- 原因:物理层、连接层、应用层、脚本层;
- 处理:临时恢复加长期修复;
- 预防:监控、校验、灰度。
先有留痕,再谈自动化
没有证据的自动化,只是把失败藏得更深。把三件套接入任务流程,失败时自动采集,才能让规模化运维可持续。
常见问题
logcat 应该什么时候开始抓?
最好先清空日志,再复现问题,能减少无关信息。批量场景按任务开始时间切片。
截图能替代日志吗?
不能。截图证明现象,日志证明原因,两者时间对齐才有定位价值。
日志里有账号信息怎么办?
保存前脱敏,限制访问范围,设定保存期限,不要上传到第三方平台。