一 常用指令:
pwd //查看当前目录
find -name *** //查找文件
grep "***" ./ -rn //查找关键字
logcat -s TAG //过滤tag
logcat |grep "***"//过滤关键字
ps -A |grep **//搜索进程
logcat -b all |grep wm_//生命周期相关
logcat -b all |grep boot_prog//查看启动各个阶段的时间
logcat -b all 包含kenal日志,搜索报错的源代码,即使看不懂代码,也可以看看上面的注释,也是能获得一些有用信息的。
二 打印堆栈
想要拿到堆栈,需要知道主流程或框架流程,否则,堆栈都不知道去哪打或加断点(居然还要copy 堆栈的方法,我都不知道)
1 打印java堆栈
Log.i("yang","start",new Exception());//
2 native层打印log
2.1 :#define LOG_NDEBUG 1 //打开log开关
2.2 :#include<utils/callStack.h>
#include<utils/Log.h>
2.3 :打印
android::CallStatck statck;
statck.update();
statck.log("hello log");
2.4:mk或bp文件
LOCAL_SHARED_LIBRARIED 加上
libutils 和 libcutils
三 log跟踪工具 perfetto
perfetto 不仅仅是性能分析的工具,也是log跟踪的常用工具。尤其是
频繁多个跨进程通信的时候
1 查看等锁或叫依赖:目前认为是runnable---点击cpu--查看之前的线程是哪个,就是在等哪个
2 关注一下插旗然后起名字的啥的,目前仍需探索,
3 另外perfetto启动时间对应的真实启动时间是有差值的,可能去除了kenel之前的时间了,这个也需要进一步确认
四 next total:如何编译并执行fk,等待进一步的实操。一有时间,就要实施,dont forget,what you working for,not only,but also 。。。
maybe do a wms or other bug。