场景
- 我们在开发
Android
程序时,对App
加Log
调试. 如果在主Activity
的OnDestroy
加日志后,通过切换使用最近应用
把这个App
关闭时能触发OnDestroy
事件,但是部系统版本并不能打印出OnDestory
日志,因为进程已经终止,我们通过AS
调试时也看不到绑定的这个进程的日志输出,怎么办?
说明
- 当
App
的进程终止时,我们可以通过使用外部的adb
命令进行打印logcat
输出,过滤出自己的App
名称。也能看到进程被Kill
的日志,而通过AS
调试是看不到的。
#1930 A=com.example.Application U=0 sz=0}
11-28 08:18:52.356 4410 4499 D PowerKeeper.Event: notifyActiveKilled processName: com.example.Application, pid:8564, reason:stop com.example.Application: SwipeUpClean
例子
以下是常用的通过查找匹配字符串的日志命令。
-
adb logcat -e "com[.]example"
参数-e <expr>
或--regex=<expr>
支持查找包含匹配的正则表达式的行,有些低版本的Android
系统不支持-e
参数,只能使用find
进行查找。 -
adb logcat | find "com.example"
使用管道|
来查找find
命令包含匹配的字符串的行。 -
adb logcat -e "com[.]example" -f /data/local/tmp/1.txt -m 20
写入手机系统临时目录的文件里, 只输出20
行. 如果想查看这文件,可以通过adb pull /data/local/tmp/1.txt 1-copy.txt
复制到本地路径下的1-copy.txt
。 -
adb logcat -e "com[.]example" -m 20 > 1.txt
使用>
把屏幕的输出重定向到系统本地文件,只输出20
行后退出。 -
adb logcat -e "com[.]example" -t 1000
输出最新
的1000
行,它的起始时间在1
分钟内(文档没说明,估算). 如果1
分钟内没有匹配行,只输出以下的, 注意,logcat
的日志不会永久保留的,估计会在缓存里存储1分钟。--------- beginning of main --------- beginning of system`