`
quanminchaoren
  • 浏览: 924636 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android logcat内核信息

阅读更多

步骤如下: 1.在Android的源码中(目标路径为:system/core/logcat/logcat.cpp),将其此logcat.cpp文件中的static void readLogLines(int logfd)函数作出如下修改:

static void readLogLines(int logfd) {

char buffer[256] = {0} ;

while (1) {

unsigned char buf[LOGGER_ENTRY_MAX_LEN + 1] attribute ((aligned(4)));

struct logger_entry *entry = (struct logger_entry *) buf;

int ret;

ret = read(logfd, entry, LOGGER_ENTRY_MAX_LEN);

if (ret < 0) {

if (errno == EINTR)

continue;

if (errno == EAGAIN)

break;

perror("logcat read"); exit(EXIT_FAILURE);

} else if (!ret) {

fprintf(stderr, "read: Unexpected EOF!\n"); exit(EXIT_FAILURE);

}

/* NOTE: driver guarantees we read exactly one full entry */

entry->msg[entry->len] = '\0';

if (g_printBinary) {

printBinary(entry);

} else {

(void) processBuffer(entry);

}

/*读入内核调试信息*/ if((ret = klogctl(9, buffer, sizeof(buffer))) > 0) {

if((ret = klogctl(2, buffer, sizeof(buffer))) > 0) {

entry->tid = 0;

entry->pid = getpid();

/*priority*/

entry->msg[0] = ANDROID_LOG_INFO;

/*tag*/

strcpy(entry->msg+1, KERNEL_TAG); /*message*/

strncpy(entry->msg+1+sizeof(KERNEL_TAG), buffer, ret);

entry->len = 1 + sizeof(KERNEL_TAG) + ret + 1;

entry->msg[entry->len] = '\0';

if (g_printBinary) {

printBinary(entry);

} else {

(void) processBuffer(entry);

}

}

}

}

}

当然经过此步的修改后,在源码编译中一定会出现问题,会出现什么呢?答案是在编译时找不到相应的类库。那么怎么办呢? 不要着急,第2步会说明。

2.在如上修改的.cpp文件的头文件中加入如下两个头文件:

#include <sys/klog.h>

#define KERNEL_TAG "Kernel"

great! 此时将可以顺利通过编译了哦。

3.即将修改后的源文件进行整体编译一边,方法见源码编译的相关方法。边以后生成的logcat文件放在/android/out/host /common/obj/JAVA_LIBRARIES/ddmuilib_intermediates/classes/com/android /ddmuilib/logcat目录下。

4.将上述目录下的logcat文件adb push到你的手机上的/system/bin目录下,然后adb reboot一下手机。之后就可以正常执行logcat了,相应的能够打印出kernel下的相关日志哦。

分享到:
评论

相关推荐

    安卓logcat输出内核日志android studio工程源码

    本文将深入探讨如何使用"安卓logcat输出内核日志android studio工程源码"来收集和分析内核日志信息。我们将讨论以下几个核心知识点: 1. **logcat工具**:logcat是Android系统内置的一个命令行工具,用于捕获和显示...

    shell 脚本抓取android logcat和kernel log,以及删除旧的log

    在Android系统中,logcat和kernel log是两个重要的日志系统,它们记录了系统的运行状态、错误信息和其他调试数据。shell脚本则是Linux/Android环境中进行自动化任务的强大工具。本篇将详细介绍如何利用shell脚本来...

    Android-Android日志工具支持Logcat输出和文件记录

    首先,Logcat是Android系统的核心日志服务,它能够收集来自应用、系统服务以及内核的各种日志消息。通过ADB(Android Debug Bridge)工具,开发者可以在计算机上查看和过滤这些日志。日志级别通常包括VERBOSE、DEBUG...

    adb logcat支持kernel打印

    在Android系统中,logcat是用于收集和查看设备上各种进程的日志输出的重要工具。它能捕获应用程序、系统服务、以及kernel层的调试信息。"adb logcat支持kernel打印"意味着我们可以通过adb命令获取到内核级别的日志...

    logcat移植到linux4.19内核上

    buildroot方式移植logcat,目前我用的内核时linux-4.19,该资源包里面包含以下文件 adb-logcat_dl.tar.gz android_logger.tar.gz package_adb_logcat.tar.gz package_android-tools.tar.gz

    logcatviewer,Logcat查看器.zip

    Logcat是Android系统内核的一部分,用于收集和显示应用程序以及系统服务的日志消息。它记录了不同级别的日志信息,包括VERBOSE、DEBUG、INFO、WARN、ERROR和FATAL,这些级别按照严重性递增排列。通过adb命令行工具,...

    修改Android Studio 的 Logcat 缓冲区大小操作

    在Android开发中,Logcat是开发者用来查看应用程序日志的工具,它对于诊断应用问题和性能分析非常关键。然而,默认的Logcat缓冲区大小可能无法满足所有情况下的需求,特别是对于那些需要查看大量日志信息的应用开发...

    bugreport、logcat、kernel、anr以及tombstones的log抓取

    `bugreport`、`logcat`、`kernel`、`anr`和`tombstones`是Android系统日志的重要组成部分,它们提供了系统运行状态和错误信息的详细记录。下面将详细解释这些概念及其在故障诊断中的作用。 首先,`bugreport`是一个...

    Android系统内核编译开发图文教程

    Android内核提供了丰富的调试工具,如kgdb(Kernel GNU Debugger)用于在目标设备上远程调试内核,以及logcat用于查看系统日志。通过这些工具,开发者可以定位并解决内核中的问题。 此外,Android内核开发还涉及...

    android底层(内核驱动)开发资料

    2. 调试工具:使用GDB进行内核调试,logcat收集日志,kdump用于获取内核转储信息,perf或ftrace进行性能分析。 3. 内核编译:修改内核源码后,通过make命令编译内核,并使用fastboot或adb刷入设备。 4. 测试与验证:...

    Android底层开发技术实战详解——内核、移植和驱动

    《Android底层开发技术实战详解——内核、移植和驱动》这本书深入探讨了Android系统的底层机制,包括内核、系统移植和驱动程序开发等关键领域。这些主题对于理解Android系统的运行原理,以及进行定制化开发和优化...

    Android底层开发技术实战详解 内核、移植和驱动

    《Android底层开发技术实战详解——内核、移植和驱动》这本书深入探讨了Android系统的核心技术,包括内核、系统的移植以及设备驱动程序的开发。在Android操作系统中,这些部分是构建强大、稳定且高效移动应用的基础...

    android内核移植文档整理

    10. **调试技巧**:使用`dmesg`、`logcat`、`gdbserver`等工具进行内核和应用层的调试,找出移植过程中的问题。 11. **性能优化**:移植完成后,可能需要对内核进行优化,如调整调度策略、内存分配策略,以提升系统...

    Android内核驱动——其他

    ### Android内核驱动——其他:日志系统详解 在深入探讨Android内核驱动中的日志系统之前,我们先简要回顾一下Android操作系统的基本结构。Android系统由四个主要部分组成:应用程序层、应用程序框架层、系统运行库...

    Android 内核分析报告5

    通过对Android内核中logger系统的深入解析,我们可以了解到它是如何高效地处理和记录日志信息的。这一机制不仅对于开发人员来说至关重要,也为维护和调试Android设备提供了有力的支持。未来随着Android系统的发展,...

    adb logcat 教程

    在Android开发和调试过程中,`adb logcat`是一个不可或缺的工具。它允许开发者查看设备或模拟器上运行的应用程序的日志输出,这对于追踪错误、理解程序行为以及优化性能至关重要。下面我们将深入探讨`adb logcat`的...

    腾讯X5内核官方DEMO适配AS3.2

    【腾讯X5内核官方DEMO适配AS3.2】是针对Android开发中的一个关键环节,涉及到腾讯的X5浏览内核与Android Studio 3.2的集成问题。X5内核是腾讯公司推出的一款高性能、高稳定性的手机浏览器内核,广泛应用于微信、QQ等...

    500强公司培训资料 第十五章_Android内核驱动—杂项.pdf

    它通过内核中的misc设备驱动实现,与用户态的logcat工具协同工作,使开发者能够高效地查看日志信息,进行代码跟踪与调试。这一机制不仅增强了应用的可维护性,还提升了问题定位的准确度。 #### 二、日志系统的内部...

    android查看系统信息源码

    在Android系统中,查看系统信息源码涉及到对操作系统内核、硬件特性、软件版本以及运行时环境的深入...在实际项目中,结合Android Studio的调试工具,如Logcat和Profiler,可以进一步分析和调试系统信息相关的问题。

Global site tag (gtag.js) - Google Analytics