2

我有一个连接到 pc 的 android 设备并打开了多个显示 logcat 信息的 shell。每个人都使用其特定的过滤器运行。所以我现在的问题是,这些过滤器应用在哪里?已经在手机上,因此只有过滤后的消息通过 USB 发送。还是它们应用在 adb 服务器或客户端的 pc 上?我只是想防止多个未经过滤的 logcat 流在 USB 上同时运行,因为我的带宽有限。谢谢

4

5 回答 5

1

还是它们应用在 adb 服务器或客户端的 pc 上?

它们适用于呈现 LogCat 信息的任何应用程序。

于 2013-02-07T13:51:26.990 回答
1

目前不可能在不同的设备上运行相同的构建。如果您有不同的构建,那么您可以根据设备名称或版本应用过滤器。

当你想这样做时,它可以通过一些技巧来实现。 Log.v(LOG_TAG,"message"); 在您的 LOG_TAG 附加设备 ID 中,可以通过 TelephonyManager 识别。

并使用它添加过滤器。

于 2013-02-07T13:51:56.090 回答
1

Android 将设备上的日志信息存储到 4 个不同的缓冲区中(事件日志、系统日志、无线电日志、主日志)。之后,adbd守护进程可以访问此信息并将其发送给客户端。因此,只有在客户端您才能过滤信息,因为所有信息都存储在手机上。

于 2013-02-07T14:01:27.070 回答
1

logcat使用设备上的命令将数据从内核缓冲区中提取出来。如果你跑

% adb logcat -\?

您可以看到使用信息,其中包括“filterspecs”的描述。这些可以在命令行上设置,或者通过设置ANDROID_LOG_TAGS. 例如:

% adb logcat '*:W'

只会向您显示警告或错误级别的消息。

这里的诀窍是它adb logcat只是 的简写,还有将环境变量adb shell logcat传播到设备的额外好处。ANDROID_LOG_TAGS过滤是由logcat命令完成的,它只是将文本输出转储到 adb 上。该logcat命令的输出没有得到任何特殊处理。

因此,您的问题的答案是:过滤发生在设备上,针对每个窗口单独进行。

DDMS 的工作方式不同。

于 2013-02-08T02:26:11.147 回答
0

过滤器应用在手机上。因此,您中的一些人为不存在的 logcat 标记输入过滤器,然后没有流量通过 USB。但是使用 cmd shell 打开的每个 logcat 都会创建一个新的流,从而增加总流量。

于 2013-02-11T14:53:59.530 回答