## 背景
盒子有时候不打印log,可以复现,概率95%。
先看看代码,在某个页面播放器播放视频成功回调下打log,这个场景可以稳定出现的。
因为每次都能成功播放视频,而且断点调试是可以进入回调方法体的的,我还在方法开始加了个toast。
每次都能看到toast出现。以证明方法正常执行。
方法内我加入log,验证能否打印到控制台。
Log.i("debug_tag", "onPlayStart1: );
Log.d("debug_tag", "onPlayStart2: );
Log.e("debug_tag", "onPlayStart3: );
Log.w("debug_tag", "onPlayStart4: );
Log.wtf("debug_tag", "onPlayStart5: );
LogUtils.i("debug_tag", "onPlayStart11: );
LogUtils.d("debug_tag", "onPlayStart22: );
LogUtils.e("debug_tag", "onPlayStart33: );
LogUtils.w("debug_tag", "onPlayStart44: );
LogUtils.v("debug_tag", "onPlayStart55: );
95%的概率看不到打印,但是其他地方就能打印出来,这个方法在主线程执行。
### 对比测试1
我使用一个空demo跑盒子,也是正常打印,甚至for 100次不断点击都是正常的。
每一种log都正常输出了!
### 对比测试2
在项目的那个页面,我通过过滤tag方式,对比打印的日志行数。
首先:情况log
进入页面:进入页面会打印很多log,页面不是我写的,但是这个页面场景数据是固定的,所以没打log应该是一样的
多次对比:多次对比打开页面的log发现每次 行数不一样,有时候一样了但是打印内容有缺失。
#### 关注上面的log
情况是,上面的log有时候一条都没有80%,有时候只有一条比如w类型,有时候有几条log,比如i,w,e但是很少机会出现。
#### 猜测
1:盒子log打印机制有问题,如果log很多是不是会吃了,因为页面进入会打印网络请求数据,可能很长,页面不是我开发的,所以我对打的log没有印象,也不知道那个少了。
2:如果把页面打印过的log全部注释,然后只关注播放开始的log,工程量很大,但是可以试试。
3:空demo能打印,是不够复制,只能做开发用,比如测试某些tag是不是被系统过滤了,系统是可能会吃某特殊tag的。
参考这个:https://www.jianshu.com/p/ed7c1ded7ded
4:我看了9.0代码,对比了tag,根本不是我们项目的tag,而且后面我也加了自己的tag了,不是tag问题。
5:头疼的是有时候能打印出来,但是打不出的情况大多数,别问我为什么用log来调试,因为盒子断点5秒就奔溃了。
6:厂家不会鸟你,别想问了
7:在没有厂家帮忙情况下,如何定位排查问题?比如如何hook系统的log方法,判断他是否执行了,这是盒子root了但没有xp环境。有其他方法?打印log是系统创建了socket端,然后应用层调用native方法把拼接内容丢到socket里面打印的,在整个打印流程中,我不怎么熟悉,如何在应用级别来排查为什么打不出。大佬们~ dddd
是不是IDE的问题呀,用adb去抓一份全的log,就可以判断是不是IDE的问题了。