目录
离线log抓取:
1.手机先进入开发者模式
2.进入拨号页面,输入*#*#3646633#*#*
3.右划进入log and debugging 选择debugloggerui,将除了第一个全部都关闭,只留下一个mobilelog,然后点击录制,在录制之前,记得把以前录制的log删除掉,在进行录制
4.adb pull data/debuglogger
(pull log需要完整路径:adb pull /storage/emulated/0/debuglogger)
5.抓取的log存储在执行所在目录下。
adb命令打开mtklog的方法 :
adb shell am start -n com.debug.loggerui/com.debug.loggerui.MainActivity
实时log抓取:
设置log等级和打开平台log:
adb root
adb remount
adb shell setprop persist.vendor.mtk.camera.log_level 3
adb shell setprop vendor.debug.mapping_mgr.enable 2
adb shell pkill camera*
实时抓取,两种方式:
adb logcat -G 30M;adb logcat -c ;adb logcat>~Downloads/test.txt
adb logcat -G 30M && adb logcat -c && adb logcat | grep -iE "ASD"
Kernel Log:
在开发Linux device Driver或者跟踪调试内核行为的时候经常要通过Log API来trace整个过程,Kernel API printk() 是整个Kernel Log机制的基础API,几乎所有的Log方式都是基于printk来实现的。利用printk,我们可以像开发C应用中printf接口一样印log,最简单的方式,我们只要把需要打印的内容传给printk函数就可以了,如下:
printk("This is just an example!!");
当然使用printk还有一些需要注意的地方,在详细讲述之前我们先分析一下printk()实现,其流程大致如下图所示:
从上图可以看出,printk的流程大致可以分为两步:
将所有Log输出到内核的Log buffer,该Log Buffer是一个循环缓冲区,其地址可以在内核中用log_buf变量访问。根据设定的Log级别决定是否将Log输出到Console。所以我们打印的log会走向两个位置: