4.1ANR等待锁
下面我们举个例子
从标灰地方可以看出当前在执行DeviceManager被锁,在这种情况下有两种办法查看该问题
1>根据如上堆栈梳理流程查问题(相关模块责任人应该比较了解,门外汉不管用)
2>直接查看被锁对象在做什么(如果没有就看流程吧)
搜索DeviceManager
搜索完毕后发现DeviceManager在handleMessage执行后又被SetParameterRequest locked了,而SetParameterRequest执行execute后卡在native_getParameters继续查看上面堆栈
如上可以看到阻塞在binder通信过程中,而native_getParameters根据堆栈看到他调用的是libcamera_client.so
搜索libcamera_client
到了这里是不是很清晰了,类和方法名都打出来了(红色标注),直接查看,再不清楚直接反编译定位行数
APR就目前而言出现最多就两类
1>ANR: ANR问题的分析思路,主要是看ANR主线程被什么线程阻塞了。