bugreport查看问题关键字

本文探讨了导致Android系统崩溃及重启的各种原因,包括但不限于FATAL EXCEPTION IN SYSTEM PROCESS、WATCHDOG KILLING SYSTEM PROCESS等,并深入分析了system_server、surfaceflinger等关键组件的异常情况及其对系统稳定性的影响。

重启:

Exit zygote;
boot_progress_start;
FATAL EXCEPTION IN SYSTEM PROCESS;
WATCHDOG KILLING SYSTEM PROCESS;
traces_SystemServer_WDT;
am_watchdog;
system_server_watchdog;
>>> system_server <<<;
>>> /system/bin/surfaceflinger <<<;
Entered the Android system server;
SYSTEM_RESTART;
kpanic;
Kernel BUG;
Internal error;
Kernel panic;
Watchdog bark;
watchdog bite;
BOOT FAILURE;
system_server_crash;
kernel reboot;
shrink_zone;
do_mem_abort;
filemap_fault;
SyS_clone;
oom-killer;
allocation failure;
fence timeout;
GPU hang;
GPU PAGE FAULT;
PMIC watchdog;
msm_thermal_bite;
System reset;
IO failure;

watchdog:

Cmd line: system_server;
held by;

state=D;


appCrash:

FATAL EXCEPTION


ANR:

ANR IN:

### 使用 ADB Logcat 过滤关键字信息 在调试 Android 应用时,`adb logcat` 是一个非常常用的命令行工具,用于查看设备的日志输出。为了更高效地筛选出感兴趣的信息,可以使用关键字进行过滤。 #### 通过关键字过滤日志 可以直接在 `adb logcat` 命令后添加关键字来过滤日志内容。例如,如果希望查找包含 "NullPointerException" 的日志条目,可以使用如下命令: ```bash adb logcat | grep "NullPointerException" ``` 此命令会实时显示所有包含 "NullPointerException" 的日志信息。这种方式适用于关键字较为明确且单一的情况[^2]。 #### 多标签和日志级别过滤 当需要根据多个不同的 TAG 标签来过滤日志,并且还想要结合日志级别(Verbose, Debug, Info, Warning, Error, Fatal)时,可以采用更复杂的 `logcat` 参数组合。例如: ```bash adb logcat -v threadtime TAG1:V TAG2:D *:S ``` 这里 `-v threadtime` 指定了日志的输出格式为线程时间戳;`TAG1:V` 表示对于 `TAG1` 标签的日志显示所有级别的信息(Verbose 及以上);`TAG2:D` 则表示对于 `TAG2` 标签仅显示 Debug 级别及以上的日志;最后的 `*:S` 表示其他所有标签的日志都静默不显示。这样的配置可以帮助开发者专注于特定模块或问题的日志输出[^1]。 #### 实现自动化监控脚本 对于一些特定异常或者错误信息,比如空指针异常,可以通过编写 Python 脚本来实现自动化的日志监控与响应机制。下面是一个简单的例子,它展示了如何利用 Python 脚本来持续监听 `adb logcat` 输出,并在检测到空指针异常时触发相应的处理动作: ```python # coding=utf-8 import os import re import subprocess command = "adb logcat -v threadtime" # 具体执行的adb命令 keyword = r".*java.lang.NullPointerException.*" # 正则表达式匹配空指针异常 class LogcatFilter(object): def __init__(self): # 开始执行adb命令 self.p_obj = subprocess.Popen(args=command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) def filter_logcat(self): # 实时监控并过滤每一行生成的日志里的关键字 print("Logcat catching and filtering...") with self.p_obj: for line in self.p_obj.stdout: if re.match(keyword, line.decode("utf-8")): print(f"Found {keyword}") print("running adb bugreport to pull related logs... pls wait") os.system("adb bugreport") # 导出一次bugreport log压缩包 if __name__ == '__main__': logcat = LogcatFilter() logcat.filter_logcat() os.system("pause") ``` 这段代码定义了一个 `LogcatFilter` 类,其中包含了启动 ADB 日志捕获进程的方法以及对每一条日志进行关键字匹配的功能。一旦发现符合正则表达式的日志项,就会打印提示信息并运行 `adb bugreport` 来收集相关的诊断数据[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值