[MTK] 遇到加密问题,如何抓取log?

文摘 MediaTek 2020-07-16 阅读:5064

Download第一次开机的加密过程执行的比较早,因此很多log比较难抓到。

  1. 如果是毕现问题,可以参考如下方式抓取。进入cmd --》输入adb logcat -v
    time>log.txt--》连接usb---》开机
  2. 如果是概率性的问题,可以在uart log中,将logcat log抓一下。 Uart console可用情况下的抓取方法如下:Uart 上进行输入,实际就是开启了一个sh 对接起来,所以绝对不能在uart 上输入一个长命令(不可中断),否则uart 将被卡住,不能再输入。 抓取上层log, 我们通常需要call logcat, 但logcat 是不可中断的,将导致uart 不能再输入。 处理的方法即将logcat 转入后台执行,如下操作即可。

     Main log: logcat -v time &

     Radio log: logcat -v time -b radio &

     Event log: logcat -v time -b events &

    如果想关闭上层log, 直接ps 查阅前面开启的logcat process pid, 然后kill -9
    pid 杀掉即可。 注意一定要带"&",否则将block 住uart输入

  3. 如果uart console不可以用的话, 只能让main log直接导入到uart 口了。 参考:[FAQ18350]main
    log导入到uart口
  4. 如果只是想把Crypts.c中的log打印到kernel
    log的方法如下,然后连着uart复现问题,直到复现到问题为止。在复现问题前,先确认下log确实有印到uart log中。

1).system/vold/main.cpp

int main(int argc, char** argv) {
    
    ......
    
        /* For when cryptfs checks and mounts an encrypted filesystem */
    
                klog_init();   //添加这行
    
    klog_set_level(6);  //6修改为5 

2). alps/system/vold/cryptfs.c

    ......
    
    #include <math.h>
    
    #include <cutils/klog.h>   //添加这行
    
    #include "cryptfs.h"
    
    ......
    
    #define RETRY_MOUNT_ATTEMPTS 10
    
    #define RETRY_MOUNT_DELAY_SECONDS 1
    
    //add bengin
    
    #undef ALOGE
    
    #define ALOGE(x...) do {KLOG_ERROR(LOG_TAG, x);} while(0)
    
    #undef SLOGI
    
    #define SLOGI(x...) do {KLOG_NOTICE(LOG_TAG, x);} while(0)
    
    #undef SLOGD
    
    #define SLOGD(x...) do {KLOG_NOTICE(LOG_TAG, x);} while(0)
    
    #undef SLOGW
    
    #define SLOGW(x...) do {KLOG_NOTICE(LOG_TAG, x);} while(0)
    
    //#undef SLOGV
    
    //#define SLOGV(x...) do {KLOG_NOTICE(LOG_TAG, x);} while(0)      
    
    #undef SLOGE
    
    #define SLOGE(x...) do {KLOG_ERROR(LOG_TAG, x);} while(0)
    
    //add end
    
    char *me = "cryptfs";
    
    static unsigned char saved_master_key[KEY_LEN_BYTES];
    
    ...... 

0条评论

© 2024 芯缘异码. Powered by Typecho