gpt4 book ai didi

android - 关于真机Android Logcat

转载 作者:行者123 更新时间:2023-12-04 02:46:16 26 4
gpt4 key购买 nike

我有一些与 Android Logcat 相关的问题,我将这些问题称为 REAL DEVICE 而不是模拟器:

  • 我有一个程序有很多 Log.d (或其他类似的日志功能),我做了一些谷歌搜索,发现这些日志将输出到一个循环的 64K 缓冲区。我的问题是,那些 64K 缓冲区在哪里?它位于 RAM 或文件系统中吗?我的应用退出后会被删除吗?
  • 我谷歌发现,日志将输出到一个名为 /dev/event 的文件中。 (不确定),但我看不到任何与应用程序相关的日志记录,为什么?只能看到与系统相关的日志条目。
  • 每个应用程序是否将其日志输出到不同的日志文件?还是它们都转储到同一个日志文件中?在这种情况下,我们如何分离日志?
  • 如果日志缓冲区是 64K,我们如何增加它?如果我们想将日志重定向到 sd 卡上的文件,我们如何限制文件大小(当然也让它循环)?
  • 最佳答案

    逐点进行:

    (1) 日志缓冲区在 RAM 中,在内核中。日志记录由内核驱动程序处理。在最近的设备上,日志缓冲区远大于 64KB。当应用程序退出时它们不会丢失,但不会在设备重新启动后继续存在。

    (2) 设备条目在/dev/log ,例如/dev/log/main对于主日志,/dev/log/radio用于广播日志和/dev/log/events用于事件日志。日志的存储格式通常比您在 logcat 中看到的更紧凑,因此可以直接使用 cat 之类的格式读取它们。可能会令人困惑。

    (3) 所有应用程序写入相同的日志设备。每条日志消息都标有日志编写器的进程 ID 和线程 ID,因此您可以通过这种方式将它们分开。 (logcat -v threadtime 将显示 pid、tid、时间戳和标签。)

    (4) 您需要更改驱动程序中的值以更改日志的大小。同样,最近的设备具有更大的日志缓冲区,所以这可能不是那么有用。您可以使用 logcat 将输出发送到文件。 ;如果你想做某种循环缓冲区,你需要捕获 logcat 的输出并自己处理。 (您也可以直接读取日志设备,但我不认为 API 是公开的。请参阅 AOSP logcat 源。)

    最新版本的 Android 不允许应用读取日志中的所有条目。相反,应用程序只能读取它们自己生成的条目。这样做是为了允许错误报告系统捕获日志,同时防止任性的应用程序“监视”其他应用程序。当你运行 logcat来自 adb shell ,它作为 shell 运行用户,具有读取所有日志的权限。

    关于android - 关于真机Android Logcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18798545/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com