Android adb logcat在模拟器启动期间缺少一些日志

时间:2016-03-28 09:08:39

标签: android android-emulator android-logcat


当我在模拟器启动期间尝试搜索某些日志时遇到了一个奇怪的问题 当我创建一个模拟器时,adb设备以" offline"首先,然后我输入
adb logcat -v time | tee log1.txt
和adb将保持"等待设备"直到adb上线。

然后,当模拟器启动时,我再次键入adb logcat -v time | tee log2.txt,但日志文件的目标除外。
现在,我使用vimdiff log1.txt log2.txt来比较这两个日志,发现log1错过了很多日志作为Log_Diff

enter image description here

我不知道为什么一些log1.txt中的日志会丢失。 有任何想法吗?

附:我在sdk中使用Android 5.1-64bit Emulator。

1 个答案:

答案 0 :(得分:0)

经过一番研究,终于找到了Android日志守护程序的根本原因。

主要问题是LogBufferElement使用CLOCK_MONOTONIC时间戳作为排序索引。

当多个LogBufferElement的时间戳相同时,LogReader可能只转储最后一个条目。这就是为什么有些日志似乎丢失了。

AOSP Android 5.1仍有此问题,但Android 6.0已修复它。 您可以参考此patch

顺便说一句,我也对这个补丁进行了一些修改。

主要原因是Android 6.0支持C ++ 11原子std库,但Android 5.1还没有。一些原子API需要回滚。 (例如atomic_fetch_add_explicit())