首页 > 解决方案 > 如何使用 adb shell 检查应用程序是否崩溃/停止工作?

问题描述

我目前正在这样做:

-d:只调用一次logcat并返回

adb shell logcat -d

然后我在日志中进行正则表达式搜索Caused by.*"apk name"

问题是,有时它确实会在日志中生成此消息,但应用程序仍在响应/工作。想问一下是否有更好的方法来检查应用程序是否停止工作,使用 adb shell 命令。

通过停止工作,我的意思是,它仍然打开但不响应任何内容。

注意:我不是在寻找导致应用程序崩溃的原因,只是它已经停止工作。

标签: androidadb

解决方案


你知道吗:

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 -----

推荐阅读