android 离线存储目录,使用klogctl接口离线保存android kernel log

源文件如下,通过修改dmesg文件,借用klogctl接口将LOG保存到文件中。

使用方法:

1 拷贝该文件到/system/core/toolbox目录,覆盖掉原文件。

2 编译

make /system/core/toolbox

3 将生成的二进制文件out/target/product/iXXXXXX/system/bin/toolbox 拷贝到手机内部

adb push out/target/product/iXXXXXX/system/bin/toolbox /system/bin/toolbox

4 然后在手机shell中,调用dmesg,将保存LOG文件到log_eric.txt中。

1 拷贝该文件到/system/core/toolbox目录,覆盖掉原文件。

2 编译

make /system/core/toolbox

3 将生成的二进制文件out/target/product/iXXXXXX/system/bin/toolbox 拷贝到手机内部

adb push out/target/product/iXXXXXX/system/bin/toolbox /system/bin/toolbox

4 然后在手机shell中,调用dmesg,将保存LOG文件到log_eric.txt中。

adb shell

cd /data/

dmesg

将会生成/data/log_eric.txt

1 拷贝该文件到/system/core/toolbox目录,覆盖掉原文件。

2 编译

make /system/core/toolbox

3 将生成的二进制文件out/target/product/iXXXXXX/system/bin/toolbox 拷贝到手机内部

adb push out/target/product/iXXXXXX/system/bin/toolbox /system/bin/toolbox

4 然后在手机shell中,调用dmesg,将保存LOG文件到log_eric.txt中。

adb shell

cd /data/

dmesg

将会生成/data/log_eric.txt

1 拷贝该文件到/system/core/toolbox目录,覆盖掉原文件。

2 编译

make /system/core/toolbox

3 将生成的二进制文件out/target/product/iXXXXXX/system/bin/toolbox 拷贝到手机内部

adb push out/target/product/iXXXXXX/system/bin/toolbox /system/bin/toolbox

4 然后在手机shell中,调用dmesg,将保存LOG文件到log_eric.txt中。

adb shell

cd /data/

dmesg

将会生成/data/log_eric.txt

adb shell

cd /data/

dmesg

将会生成/data/log_eric.txt

#include

#include

#include

#include

#include

#include

#define FALLBACK_KLOG_BUF_SHIFT 17 /* CONFIG_LOG_BUF_SHIFT from our kernel */

#define FALLBACK_KLOG_BUF_LEN (1 << FALLBACK_KLOG_BUF_SHIFT)

#define KLOG_CLOSE 0

#define KLOG_OPEN 1

#define KLOG_READ 2

#define KLOG_READ_ALL 3

#define KLOG_READ_CLEAR 4

#define KLOG_CLEAR 5

#define KLOG_CONSOLE_OFF 6

#define KLOG_CONSOLE_ON 7

#define KLOG_CONSOLE_LEVEL 8

#define KLOG_SIZE_UNREAD 9

#define KLOG_SIZE_BUFFER 10

int main(int argc, char **argv)

{

char *buffer;

char *p;

ssize_t ret;

int n, op, klog_buf_len;

FILE *fp = fopen("log_eric.txt","wa");

if(fp == NULL){

printf("Eric Open File Failed!!!\n");

return EXIT_FAILURE;

}

klog_buf_len = klogctl(KLOG_SIZE_BUFFER , 0, 0);

if (klog_buf_len <= 0) {

klog_buf_len = FALLBACK_KLOG_BUF_LEN;

}

buffer = (char *)malloc(klog_buf_len + 1);

if (!buffer) {

perror("malloc");

return EXIT_FAILURE;

}

p = buffer;

if((argc == 2) && (!strcmp(argv[1],"-c"))) {

op = KLOG_READ_CLEAR;

} else {

op = KLOG_READ_ALL;

}

n = klogctl(op, buffer, klog_buf_len);

if (n < 0) {

perror("klogctl");

return EXIT_FAILURE;

}

buffer[n] = '\0';

fwrite(p,n,1,fp);

#ifdef DISPLAY_KLOG

while((ret = write(STDOUT_FILENO, p, n))) {

if (ret == -1) {

if (errno == EINTR)

continue;

perror("write");

return EXIT_FAILURE;

}

p += ret;

n -= ret;

}

#endif

fflush(fp);

fclose(fp);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值