问答 发现一个问题:Android 手机,同时运行 appium 和 adb 时,日志收集不全

匿名 · 2017年06月20日 · 最后由 Ali 回复于 2020年08月14日 · 2183 次阅读

我在我们 Android 项目里增加了一个日志输出(700ms 一次),单独运行日志过滤时没有问题,能收集 16 个左右。

但是如果放到 appium 里,同样的代码,却最多只能收集 8 个左右,而却很大概率只能收集 2~3 个,数量差距很明显。

刚开始寻找原因时,发现 appium 的日志里有好多使用了 adb,怀疑是同时使用 adb 影响了其稳定性,但是下面这种方式又可以一个不落的保存所以日志。

虽然勉强算是解决了问题,可是不知道哪里出的问题,也不知道怎么查。。。。
@seveniruby 不好意思打扰了,受累给一下查找问题的方向也行,谢谢。
这是代码,想试验可以复制:

import os
from multiprocessing.dummy import Pool as ThreadPool
import time
import signal


def ur(a):
    if a == 1:
        print time.ctime()
        try:
            time.sleep(12)
            pidd = os.getpid()
            os.kill(pid=pidd, sig=signal.SIGKILL)
        except Exception, e:
            print e
            int('adsadsads')
    elif a == 2:
        print time.ctime()
        aa = list([])
        while 1:
            bb = os.popen("adb shell logcat -t 1 |grep dropped:").readlines()
            if len(bb) > 0:
                if len(aa) > 0:
                    if bb[0] != aa[-1]:
                        aa += bb
                        print len(aa)
                else:
                    aa += bb
                    print len(aa)


pool = ThreadPool(4)
lists = list([1, 2])
pool.map(ur, lists)
pool.close()
pool.join()
共收到 1 条回复 时间 点赞

不知道给你的日志加上时间打印,这样是否对你排查有一些帮助,另外还有一个 logcat 缓存区是否有影响(不知道漏日志的是不是和在 SourceCRT 上直接敲 logcat 一样,读取的速度和他 logcat 刷新的速度不一致,导致部分 log 遗失,可以先把日志的时间加上来判断漏了哪些) ps:如果问题已解决,可以回复一下具体原因么

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册