一、打开Native层的LOGV
1 修改代码(注意 宏定义的位置 位置)
宏定义只在当前源文件里面生效
#define LOG_TAG "AndroidRuntime"
#define LOG_NDEBUG 0
#include <utils/Log.h>
2 参考代码
system/core/include/log/log.h
#ifndef LOG_NDEBUG
#ifdef NDEBUG
#define LOG_NDEBUG 1
#else
#define LOG_NDEBUG 0
#endif
#endif
二、相关知识
0 .常用指令
adb logcat -b all *:V
adb shell dmesg
1. 服务介绍
安卓内部会维护一个
log.d 服务
2. 缓存区
指定多缓冲区
adb logcat -b main -b system -b events
log.d 服务维护几个 buff (属于用户空间)
包括
1. main 缓冲区
- 日志来源:Java 应用层、apk 日志(通过
android.util.Log类输出)。 - 内容特点:
- 包含应用开发中的常规日志(如
Log.d(),Log.i()等)。 - 默认缓冲区,记录非系统核心组件的所有日志(如用户 App 的调试信息)。
- 包含应用开发中的常规日志(如
- 查看命令:
adb logcat -b main
2. system 缓冲区
- 日志来源:Android 系统组件、系统服务及服务日志(通过
android.util.SLog类输出)。 - 内容特点:
- 记录系统服务(如
ActivityManager、PowerManager)的运行状态、错误等。 - 用于诊断系统级问题(如服务启动失败、资源冲突)。
- 记录系统服务(如
- 查看命令:
adb logcat -b system
3. events 缓冲区
- 日志来源:二进制格式的系统事件日志(通过
EventLog.writeEvent()输出)。 - 内容特点:
- 记录结构化事件(如 Activity 生命周期
onStart/onResume、屏幕旋转、按键事件)。 - 需专用工具解析,适合监控系统行为时序。
- 记录结构化事件(如 Activity 生命周期
- 查看命令:
adb logcat -b events
4. radio 缓冲区
- 日志来源:无线通信模块日志(如 RIL 层、电话、蓝牙、Wi-Fi)。
- 内容特点:
- 包含基带、网络连接、短信通话等底层通信日志。
- 调试信号强度、网络切换、SIM 卡问题时需重点关注。
- 查看命令:
adb logcat -b radio
5. crash 缓冲区
- 日志来源:应用崩溃日志(由系统自动捕获)。
- 内容特点:
- 存储未捕获异常(如
FATAL EXCEPTION)的堆栈轨迹(StackTrace)。 - 关键字段包括崩溃进程 PID、异常类型及触发位置。
- 存储未捕获异常(如
- 查看命令:
adb logcat -b crash
如果用 logcat 那么默认会 打印 main system carsh
3. buffer 的大小
查看缓冲区大小:adb logcat -g。
4.kernel 的buff
是从 内核拷贝(dev/dmsg)出来的
5. 函数or方法使用
log.d 是java 层
ALOG 是c++ 层
6. log等级
V 优先级最低
D Debug
I info
W Warn
E error
F Fatal
S 优先级最高
7 . log 过滤
第一种方法
- s
例如:
logcat -s “system_server”
索引 标签是 system_server 的log
logcat -s “system_server:E”
索引 标签是 system_server 的 高于优先级 e的 log
第二种方法
logcat netmgs:E system_server:W *:S
就是过滤出 netmgs 它的 E级(包括e) 以上 system_server 的 W级以上(包括w) 还有所有的 的 S级别以上。
那么就只会打印 netmgs:E system_server:W
8 . 清空日志
logcat -c 清除 环形缓冲区buf
因为每次 logcat 都会从 缓冲区头开始 打印
11 打印到指定的 文件
-f 文件名
9. 代码解析
1 logcat -s MyLogtest
2 logcat 默认是 D
#undef NDEBUG
#define LOG_NDEBUG 0 //1 A 将logcat 默认打印等级 修改为 V, B如果不修改默认打印等级是 D
#include <stdio.h>
#define LOG_TAG "MyLogtest" //2 logcat -s MyLogtest 指定的标签 是在这里指定的
#include <log/log.h> // 3 添加 tag 是要在这个文件之上的


211

被折叠的 条评论
为什么被折叠?



