2016-03-28 56 views
0


我在模拟器启动过程中尝试搜索某些日志时遇到了一个奇怪的问题。
当我创建一个模拟器,亚行设备开始与“下线”,再I型
adb logcat -v time | tee log1.txt
和亚洲开发银行将保持“等待换设备”,直到亚行网上成了。

然后当模拟器启动时,我再次输入adb logcat -v time | tee log2.txt,除了日志文件的目的地。
现在,我用vimdiff log1.txt log2.txt这两个日志比较,发现LOG1错过了许多记录作为Log_DiffAndroid adb logcat在模拟器启动过程中缺少一些日志

enter image description here

我不知道为什么在log1.txt一些日志将错过。 任何想法?

P.S.我在sdk中使用Android 5.1-64位仿真器。

回答

0

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

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

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

AOSP Android 5.1仍然有这个问题,但Android 6.0已经修复了它。 你可以参考这个patch

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

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