安卓logcat 与 dmesg

一、打开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 类输出)。
  • 内容特点
    • 记录系统服务(如 ActivityManagerPowerManager)的运行状态、错误等。
    • 用于诊断系统级问题(如服务启动失败、资源冲突)。
  • 查看命令
    adb logcat -b system
    
3. events 缓冲区
  • 日志来源:二进制格式的系统事件日志(通过 EventLog.writeEvent() 输出)。
  • 内容特点
    • 记录结构化事件(如 Activity 生命周期 onStart/onResume、屏幕旋转、按键事件)。
    • 需专用工具解析,适合监控系统行为时序。
  • 查看命令
    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  是要在这个文件之上的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值