adb 抓取log小结



android通过ADB抓取log

在线log的抓取


抓取离线log

#adb shell 
#logcat -v threadtime > /mnt/sdcard/logcat& 


抓取kernel的缓存log

adb shell cat /proc/kmesg > dmesg.txt 收集kernel og

kernel缓存log

adb shell dmesg > 加txt文件目录

抓取mainlog

adb logcat -v threadtime > logcat.txt 收集用户空间的log

抓取bugreport

adb bugreport > bugreport.txt

<think>我们正在回答用户关于如何使用ADB抓取Android设备日志(logcat)的问题。根据引用内容,我们可以总结出几种方法,并提供示例。用户要求一个示例教程,因此我们需要提供详细的步骤。参考引用:[^1]:提到可以通过adb命令运行logcat,并说明需要进入platform-tools目录执行命令。[^2]:提到使用adb和bat命令组合快速抓取崩溃日志。[^3]:提到在出现Crash、ANR等情况时使用adb抓取日志。[^4]:提到使用ADB命令控制logcat日志本地存储功能,特别是在无法进入图形界面的情况下。我们将提供以下内容:1.基本命令:如何通过adblogcat命令抓取日志。2.将日志输出到文件的方法。3.过滤日志的方法(例如,按优先级、标签等)。4.抓取崩溃日志(特别是Crash和ANR)的常用方法。5.在设备无法启动图形界面时如何抓取日志(参考引用[4])。注意:由于用户要求示例教程,我们将给出具体的命令示例。步骤:第一步:准备工作-安装AndroidSDK,并配置环境变量(确保adb命令可用)。-打开命令行(Windows下为CMD或PowerShell,Mac/Linux下为终端)。-连接Android设备(通过USB或Wi-Fi),并确保设备已开启USB调试模式。第二步:基本命令-查看设备连接:`adbdevices`-抓取实时日志:`adblogcat`第三步:将日志保存到文件-`adblogcat>logcat.txt`(将日志输出到当前目录的logcat.txt文件中,按Ctrl+C停止)第四步:过滤日志-按优先级过滤:`adblogcat*:E`(只显示错误级别的日志)优先级:V(Verbose),D(Debug),I(Info),W(Warning),E(Error),F(Fatal),S(Silent)-按标签和优先级:`adblogcatMyApp:D*:S`(只显示标签为MyApp的Debug及以上级别的日志,其他标签静默)第五步:抓取崩溃日志(Crash和ANR)-崩溃日志通常会在日志中打印堆栈信息,我们可以通过过滤特定标签来获取:`adblogcat*:E`(因为崩溃通常是Error级别)-也可以专门抓取ANR日志(ApplicationNotResponding):ANR日志通常保存在设备的`/data/anr/traces.txt`文件中,可以通过以下命令拉取:`adbpull/data/anr/traces.txt`注意:在Android8.0及以上,ANR日志可能不在这个位置,可以使用以下命令:`adbshell"cat/data/anr/traces.txt">anr_log.txt`第六步:在设备无法启动图形界面时抓取日志(例如开机日志)-引用[4]提到,可以通过ADB命令启用日志存储,但这里我们更关心如何抓取开机日志。-方法:在设备启动时就开始抓取日志,因为adb在设备启动过程中可能无法立即连接,所以需要等待设备连接。我们可以使用循环来等待设备并抓取日志(适用于Linux/Mac,Windows下可以使用类似思路的批处理):```adbwait-for-deviceadblogcat>boot_log.txt```或者,为了确保抓取到完整的开机日志,可以先清空日志缓存,然后重启设备并立即开始抓取:```adblogcat-c#清空日志缓存(需要设备已连接并可用)adbreboot#重启设备(可选,如果设备已经重启则不需要)adbwait-for-deviceadblogcat>boot_log.txt```第七步:使用批处理文件(Windows)或Shell脚本(Mac/Linux)自动化-引用[2]提到使用bat命令组合快速抓取崩溃日志,我们可以创建一个bat文件(Windows):例如,创建一个`grab_log.bat`文件,内容如下:```adblogcat-vtime>%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%_logcat.log```这个命令会将日志按时间输出到以当前日期时间命名的文件中。注意:以上命令可能需要根据实际情况调整。由于用户要求示例教程,我们将按照步骤详细说明。下面开始组织回答:</think>### 如何使用 ADB 抓取 Android 设备日志 (logcat) 教程 #### 一、基础环境配置 1. **安装 ADB 工具** - 下载 [Android SDK Platform-Tools](https://developer.android.com/studio/releases/platform-tools) - 解压后配置系统环境变量(将 `platform-tools` 路径添加到 `PATH`) - 验证安装:终端执行 `adb version` 显示版本号即成功[^1] 2. **设备端准备** - 开启手机 **开发者模式**(设置 → 关于手机 → 连点 7 次"版本号") - 启用 **USB 调试**(开发者选项 → USB 调试) - 通过 USB 连接电脑,手机弹窗选择"允许调试" --- #### 二、核心抓取命令 ```bash # 实时查看日志(Ctrl+C 停止) adb logcat # 保存日志到本地文件 adb logcat > logcat.txt # 抓取崩溃日志(Crash/ANR) adb logcat *:E > crash_log.txt # 仅抓取错误级别日志[^3] # 按标签过滤日志(如只抓取系统错误) adb logcat -s "AndroidRuntime" "System.err" ``` --- #### 三、高级场景操作 1. **抓取完整开机日志** ```bash adb logcat -c # 清空旧日志缓存[^4] adb reboot # 重启设备 adb wait-for-device adb logcat -v time > boot_log.txt ``` 2. **自动化抓取脚本**(Windows Batch 示例) ```batch @echo off set timestamp=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2% adb logcat -v time > log_%timestamp%.txt echo 日志已保存至 log_%timestamp%.txt ``` 双击运行即可生成带时间戳的日志文件[^2] 3. **WiFi 调试抓取**(无需 USB) ```bash adb tcpip 5555 # USB 模式下启用 TCP adb connect 设备IP:5555 adb logcat -d > wifi_log.txt ``` --- #### 四、日志分析技巧 | 过滤命令 | 作用 | 示例 | |-------------------|-------------------------------|--------------------------| | `*:V` | 显示所有详细日志 | `adb logcat *:V` | | `*:E` | 仅显示错误日志 | `adb logcat *:E` | | `-s TAG1:TAG2` | 按标签过滤 | `adb logcat -s ActivityManager` | | `--pid=<PID>` | 按进程 ID 过滤 | `adb logcat --pid=1234` | | `-b events` | 抓取系统事件日志 | `adb logcat -b events` | --- #### 五、常见问题解决 - **设备未识别**: ```bash adb kill-server && adb start-server # 重启 ADB 服务 adb devices # 检查设备列表 ``` - **权限不足**: - 手机确认"允许 USB 调试"弹窗 - 执行 `adb root` 获取 root 权限(需已 ROOT 设备) - **日志过大**: ```bash adb logcat -G 2M # 设置缓冲区大小为 2MB adb logcat -c # 清空缓冲区后重新抓取 ``` > **关键提示**: > - 抓取崩溃日志时优先使用 `*:E` 过滤错误信息[^3] > - 系统级问题(如开机故障)需结合内核日志 `adb shell dmesg > dmesg.log` > - 使用 `-v time` 参数添加时间戳便于问题追踪[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值