android - 如何使用 adb shell 检查应用程序是否崩溃/停止工作?
问题描述
我目前正在这样做:
-d:只调用一次logcat并返回
adb shell logcat -d
然后我在日志中进行正则表达式搜索Caused by.*"apk name"
。
问题是,有时它确实会在日志中生成此消息,但应用程序仍在响应/工作。想问一下是否有更好的方法来检查应用程序是否停止工作,使用 adb shell 命令。
通过停止工作,我的意思是,它仍然打开但不响应任何内容。
注意:我不是在寻找导致应用程序崩溃的原因,只是它已经停止工作。
解决方案
你知道吗:
Android 在遇到应用无响应 (ANR) 时会存储跟踪信息。
您可以在此处获取更多信息:https ://developer.android.com/topic/performance/vitals/anr#diagnosing_anrs
有了这些信息,我可以通过以下命令确定应用程序是否处于 ANR 状态:
首先,获取您的应用程序的 PID:
adb shell ps | grep <app.package.name>
第二列中的值是 PID。然后,启用root访问:
adb root
最后,检查 /data/anr/:
adb shell grep <PID> /data/anr/*<app.package.name>*
请注意,最后一个命令中的星号 (*) 很重要。如果您看到类似下面的内容,则您的应用处于 ANR 状态。
/data/anr/traces_app.package.name.txt:----- pid 11828 at 2021-09-06 03:00:05 -----
/data/anr/traces_app.package.name.txt: | sysTid=11828 nice=0 cgrp=default sched=0/0 handle=0xb6f5cbec
/data/anr/traces_app.package.name.txt:----- end 11828 -----
推荐阅读
- javascript - VUE-使用 GetElementByClassName 不起作用
- node.js - 在 express 中访问部分视图时出现问题
- java - 在另一个类中调用方法时出错
- delphi - 仅从 DBGrid 中删除行
- sql-server - 动态 SQL 遇到的问题
- node.js - 尝试在 Ubuntu 上加载 ODBC 时出错
- javascript - 如何在 Flask 项目中识别 React 文件
- sql - 根据 CTE 结果更新表列
- oracle - Oracle statspack 报告中是否有任何参数来指示完成了多少次提交?
- authentication - 使用客户端 ID 和密钥对 Azure Dev Ops 服务客户端库进行身份验证