Logcat 被“发送垃圾邮件”,导致“输出过多无法处理”
Posted
技术标签:
【中文标题】Logcat 被“发送垃圾邮件”,导致“输出过多无法处理”【英文标题】:Logcat is being "spammed", resulting in "Too much output to process" 【发布时间】:2016-04-06 20:42:39 【问题描述】:每当我将三星 Galaxy S5(运行 android 4.4.2)连接到我的计算机时,Android Studio 中的 Logcat 就会开始被同一条消息“发送垃圾邮件”多次~1600 次每秒,导致在 Logcat 中的黄色框中显示消息“Too much output to process”。这是没有过滤和选择调试进程的时候。
Logcat 消息是这样的:
D/tms_audio_hw/AudioTmsIpc AudioTmsClientListen accept Done gAudioClientAcceptSockFd -1 gAudioClientLocalSockFd 24
谷歌搜索它发现的很少。其实没什么。我不确定,但它似乎也影响了我的应用程序的日志记录,因为当我选择我的应用程序作为调试进程时,我没有从我的应用程序中获得所有 Logcat 输出 - 有时我会得到一些,有时我会得到其他人,有时我不会得到。
另外,由于这个原因,我的电脑开始疯狂地使用 CPU 来处理这些消息,导致 CPU 使用率极高,风扇也疯狂!
这是什么原因造成的?
编辑
我现在查看了这些日志的确切输入速度,速度为每秒 1600 条日志,并且一遍又一遍地重复同样的消息。 不要告诉我这是“正常行为”,除非您在自己的设备上遇到这种情况。
【问题讨论】:
那些看起来是内核日志消息。你的过滤器打开了吗?右上角的下拉菜单应设置为“仅显示选定的应用程序”。 不,不是在显示这些消息时。但是我自己的应用程序中的日志发生了一些奇怪的事情——有时它们会出现在 logcat 中,有时它们不会。要么是 Android Studio 再次出现故障,要么它接收到太多日志而无法处理所有日志?据我了解,即使我过滤了输出,Android Studio 仍然必须处理从手机发送的每条日志消息才能过滤它们?我觉得处理不了。 Eclipse 3 年多来从未遇到过这样的问题。 我从来没有遇到过过滤器打开时丢失日志消息的问题。日志处理不是产生丢弃消息的原因,也不是占用 CPU 的原因,而是显示它们。例如,在 Linux 上编译我的包时,如果将所有内容打印到屏幕上需要时间,则编译时间会显着更长。 您是否曾经有每秒 1600 条日志(这只是那些特定的消息)进入?我不确定这与我的日志没有一致显示有什么关系,这可能只是 Android Studio 的一个小故障,但由于它在模拟器上运行良好且花花公子,我怀疑我的手机出现了某种日志过载... 每秒 1600 条日志消息是荒谬的。你能分辨出日志来自哪个进程吗? pid 应该在 logcat 输出中可见(如果您无法从正在使用的任何工具中获取它,请使用adb logcat -v threadtime
)。使用adb shell ps
查看进程列表。
【参考方案1】:
您可能在android监视器中选择了“无过滤器”,导致“输出过多,无法处理错误”,请将其更改为“仅显示选定的应用程序" 则所有其他 Log 行都将被过滤,不会显示在 Logcat 中。
这是 Android Monitor 的快照。
【讨论】:
这无助于所有日志都从设备传输到 logcat 并因此减慢 USB 连接和 logcat 的速度。过滤器纯粹是装饰性的【参考方案2】:我在测试应用时遇到了类似的问题。最初日志消息按预期显示,然后它开始“随机”显示我的日志消息,即显示然后不显示。
删除 Logcat 过滤器会显示“太多输出无法处理”消息。我还注意到日志显示与我手机上安装的应用程序相关的消息(我正在使用手机测试我的应用程序)并且与我的应用程序无关。
我断开了手机与笔记本电脑的连接,重新启动手机,然后将其重新连接到笔记本电脑并运行应用程序。 Logcat 恢复正常,按预期显示日志消息。
【讨论】:
是的,我也发现重启手机似乎有帮助,只是忘记在这里发布了。【参考方案3】:这是正常行为;它与特定的手机型号或 Android 操作系统版本无关。当您删除所有过滤器时,会从所有可以记录和确实记录的所有内容(包括系统组件和当时加载的各种库)中重定向太多的日志输出。
推荐的默认方法是简单地过滤掉并仅查看应用程序的日志输出,并仅在您专门调试需要了解该部分代码周围发生的其他事情时才切换到不过滤。
【讨论】:
但这太极端了——实际上是同一行,每秒几十个。我从未在任何其他手机上体验过这种情况。当然,总是有一些的东西被记录下来,但没有这样的东西。当我说我的计算机的 CPU 使用率在我连接手机后立即飙升时,我并不是在开玩笑。过滤 logcat 似乎也无济于事 - 我猜消息仍在发送到 Android Studio,只是没有显示? @BadCash 此日志消息似乎特定于 Galaxy S 系列。谷歌搜索AudioTmsClientListen
给了我 Galaxy 结果。
我已经更新了我的问题。我设法通过反复试验复制了其中一些,因为日志不停地呼啸而过。您是在告诉我 每秒 1600 条相同消息是正常行为吗?
不,每秒 1600 次是不正常的,@BadCash。但是,您在发布问题时并没有这么说。以上是关于Logcat 被“发送垃圾邮件”,导致“输出过多无法处理”的主要内容,如果未能解决你的问题,请参考以下文章