尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

ADB Logcat 排查真机崩溃与日志分析

ADB Logcat 排查真机崩溃与日志分析 一、基础命令1. 基本使用# 查看实时日志adb logcat# 清空日志缓冲区adb logcat-c# 保存日志到文件adb logcatcrash.log# 显示时间戳adb logcat-vtime# 显示线程信息推荐adb logcat-vthreadtime2. 多设备情况# 查看连接的设备adb devices# 指定设备adb-s设备序列号logcat二、日志级别过滤Android 日志级别由低到高级别缩写说明VerboseV详细信息DebugD调试信息InfoI一般信息WarnW警告ErrorE错误FatalF致命错误# 只看 Error 及以上级别adb logcat *:E# 只看指定 TAG 的 Debug 级别adb logcat MyApp:D *:S# *:S 表示屏蔽其他所有日志三、崩溃排查核心方法1. 抓取崩溃堆栈关键# 过滤崩溃相关关键字adb logcat|grep-iFATAL\|AndroidRuntime\|Exception# Windows 下使用 findstradb logcat|findstrFATAL AndroidRuntime2. Java 崩溃Crash崩溃时会打印FATAL EXCEPTION重点关注E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.app, PID: 12345 java.lang.NullPointerException: ... at com.example.app.MainActivity.onCreate(MainActivity.java:45)排查要点FATAL EXCEPTION后的异常类型Caused by追踪根本原因at定位到具体的类和行号3. Native 崩溃NDK/C# 过滤 native 崩溃adb logcat|grep-iDEBUG\|backtrace\|signal典型输出F/libc: Fatal signal 11 (SIGSEGV), code 1 ... F/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) F/DEBUG: backtrace: #00 pc 0000... /data/app/.../libnative.so常见 signal 含义Signal含义SIGSEGV (11)内存访问违规空指针、野指针SIGABRT (6)主动 abortassert 失败SIGBUS (7)内存对齐错误SIGILL (4)非法指令4. ANR应用无响应# 拉取 ANR 日志文件adb pull /data/anr/traces.txt# 新版本 Androidadb shellls /data/anr/adb pull /data/anr/anr_xxx四、高级过滤技巧1. 按 PID 过滤推荐# 先获取进程 PIDadb shell pidof com.example.app# 按 PID 过滤adb logcat--pidPID# 一行命令adb logcat--pid$(adb shell pidof com.example.app)2. 按 TAG 和级别组合# 查看 ActivityManager 的 Info 级别屏蔽其他adb logcat ActivityManager:I *:S3. 正则过滤Android 7.0# 使用正则表达式adb logcat-eException|Error# 反向过滤排除adb logcat|grep-vchatty4. 缓冲区选择# 查看所有缓冲区adb logcat-ball# 系统日志adb logcat-bsystem# 崩溃缓冲区adb logcat-bcrash# 事件日志adb logcat-bevents五、日志输出格式# 常用格式说明adb logcat-v格式格式说明brief默认格式time显示日期时间threadtime显示时间PIDTID推荐long显示所有字段color彩色输出# 推荐组合adb logcat-vthreadtime-vcolor六、实战流程完整崩溃排查步骤# 1. 清空旧日志adb logcat-c# 2. 开始记录并保存adb logcat-vthreadtimecrash_log.txt# 3. 复现崩溃操作...# 4. CtrlC 停止后分析文件一键抓取崩溃日志脚本#!/bin/bashPACKAGEcom.example.appadb logcat-cecho开始监控崩溃请复现问题...adb logcat-vthreadtime|grep-EFATAL|AndroidRuntime|$PACKAGE|teecrash_$(date%Y%m%d_%H%M%S).log七、Native 崩溃符号解析对于 Native 崩溃需要使用符号表解析地址# 使用 ndk-stack 工具adb logcat|ndk-stack-sym项目/obj/local/arm64-v8a# 或使用 addr2lineaddr2line-elibnative.so-f0x00001234八、常见问题速查1. 日志被截断/丢失# 增大缓冲区adb logcat-G16M# 查看缓冲区大小adb logcat-g2. chatty 日志聚合导致丢失--------- beginning of ... ... chatty ... expire ... lines解决增大缓冲区或关闭 chatty3. 获取系统属性辅助分析# 查看系统信息adb shell getprop ro.build.version.release# 查看内存状态adb shell dumpsys meminfo com.example.app九、辅助工具推荐工具用途Android Studio Logcat图形化过滤、搜索pidcat彩色化、按包名过滤ndk-stackNative 崩溃符号解析Firebase Crashlytics线上崩溃收集bugreport完整系统报告# 生成完整 bug 报告adb bugreport bug_report.zip
返回列表