当前位置: 首页 > news >正文

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

一、基础命令

1. 基本使用

# 查看实时日志adb logcat# 清空日志缓冲区adb logcat-c# 保存日志到文件adb logcat>crash.log# 显示时间戳adb logcat-vtime# 显示线程信息(推荐)adb logcat-vthreadtime

2. 多设备情况

# 查看连接的设备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-i"FATAL\|AndroidRuntime\|Exception"# Windows 下使用 findstradb logcat|findstr"FATAL AndroidRuntime"

2. 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-i"DEBUG\|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)主动 abort(assert 失败)
SIGBUS (7)内存对齐错误
SIGILL (4)非法指令

4. ANR(应用无响应)

# 拉取 ANR 日志文件adb pull /data/anr/traces.txt# 新版本 Androidadb shell"ls /data/anr/"adb pull /data/anr/anr_xxx

四、高级过滤技巧

1. 按 PID 过滤(推荐)

# 先获取进程 PIDadb shell pidof com.example.app# 按 PID 过滤adb logcat--pid=<PID># 一行命令adb logcat--pid=$(adb shell pidof com.example.app)

2. 按 TAG 和级别组合

# 查看 ActivityManager 的 Info 级别,屏蔽其他adb logcat ActivityManager:I *:S

3. 正则过滤(Android 7.0+)

# 使用正则表达式adb logcat-e"Exception|Error"# 反向过滤(排除)adb logcat|grep-v"chatty"

4. 缓冲区选择

# 查看所有缓冲区adb logcat-ball# 系统日志adb logcat-bsystem# 崩溃缓冲区adb logcat-bcrash# 事件日志adb logcat-bevents

五、日志输出格式

# 常用格式说明adb logcat-v<格式>
格式说明
brief默认格式
time显示日期时间
threadtime显示时间+PID+TID(推荐
long显示所有字段
color彩色输出
# 推荐组合adb logcat-vthreadtime-vcolor

六、实战流程

完整崩溃排查步骤

# 1. 清空旧日志adb logcat-c# 2. 开始记录并保存adb logcat-vthreadtime>crash_log.txt# 3. 复现崩溃操作...# 4. Ctrl+C 停止后分析文件

一键抓取崩溃日志脚本

#!/bin/bashPACKAGE="com.example.app"adb logcat-cecho"开始监控崩溃,请复现问题..."adb logcat-vthreadtime|grep-E"FATAL|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-g

2. chatty 日志聚合导致丢失

--------- beginning of ... ... chatty ... expire ... lines

解决:增大缓冲区或关闭 chatty

3. 获取系统属性辅助分析

# 查看系统信息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

http://www.cnnetsun.cn/news/3952554.html

相关文章:

  • 从0到1构建Swag项目:Node.js与浏览器环境安装部署全攻略
  • 计算机毕业设计之高校奖助学金管理系统
  • 为什么选择csview?对比xsv、csvlook的10项性能优势解析
  • WSL2和multicast
  • Unity色彩管理新体验:HSV-Color-Picker-Unity预设功能实战教程
  • DevOps Interview Guide中的团队建设:打造高效协作的DevOps文化面试题解析
  • OpenMDAO优化算法全解析:从梯度法到进化算法的应用指南
  • 终极指南:Intervention Validation的IBAN与BIC验证规则实战应用
  • UI.Vision RPA完整指南:5步实现跨平台桌面自动化
  • 签完的合同到底履没履行?企业用电子跟踪别再靠人盯
  • HTML作业实战:从零基础到完整网页开发指南
  • MySQL 用 limit 为什么会影响性能?几种优化方案对比!
  • 探索gh_mirrors/ai/ai-directories:2024年最全面的AI工具目录清单
  • Samsung K4UHE3D4AB-MGCLT00:32Gb LPDDR4X 超低功耗内存技术规格与应用
  • 打造你的专属AI桌面伙伴:DyberPet开源框架深度解析
  • Storybook Design Token实战教程:构建美观的设计系统文档
  • ComfyUI_TensorRT支持哪些模型?完整兼容列表与性能测试
  • GeekIt 极客在线工具箱 V2.3.0 正式发布,增加一整套PDF工具箱
  • 【单片机毕业设计推荐】基于 STM32 单片机的智能大棚环境监测与自动控制系统设计 基于 STM32 单片机的农作物环境参数采集与智能调控装置设计(011706)
  • Flet多媒体处理架构深度解析:构建高性能音视频应用的技术实践
  • 构建高可用系统:Comedy框架的Actor故障恢复与监控
  • 5分钟上手mjga-scaffold:从环境配置到容器化部署的快速指南
  • 3个技巧让Windows风扇控制变得像呼吸一样自然
  • 从理论到实践:pySecurity带你掌握CVE-2012-1823漏洞分析与利用
  • docker-ddns完全指南:用Docker+Go+Bind9构建你的专属动态DNS服务
  • 从零到一:如何用SRE思维构建可靠的现代系统
  • 2026进口高低压成套设备溢价太严重,如何在保证性能的前提下控制采购成本?
  • 3DS破解终极指南:从零开始安装boot9strap自定义固件
  • 2026小程序制作平台哪家最实惠?关注这个几个维度才不吃亏!
  • 如何快速安装sublime-autoprefixer?5分钟上手教程