排查问题

如何定位一个View在哪里

如果这个view可以点击,在OnClickListener的OnClick方法上面打个断点

如果这个View无法点击,请在View的OnTouch方法添加断点,用手触摸一下即可。

点击一下命中之后即可在左下角的调用栈看到对应的View.

如何输出一个方法的调用栈

我们知道如果这个方法只被执行一次,那么你在这个方法上添加一个断点然后执行一次看debug调用栈就好了,但是如果这个方法被很快速的调用,那么大概率断点会卡死或者不调用,实战中是这样的。

如果这个方法可以被你修改,那么加一句log

Log.d("xx","xx",new Throwable("xx"));
复制代码

这样在log中过滤这句话就能看到所有的方法调用栈了。

如果这个方法不能被你修改怎么办?比如我想看一个sdk中被混淆的方法,我无法进行修改。

此处推荐一个aop框架:github.com/eleme/lance…

集成这个框架之后,我举一个输出onTouch事件的log调用栈

@TargetClass("android.view")
@Proxy("onTouchEvent")
public boolean onTouchEvent(MotionEvent event) {
    Log.d("xx", "xx", new Throwable("xx"));
    return (boolean) Origin.call();
}
复制代码

如何知道当前Activity是哪个

在log中ActivityManager,并且选择为No Filters,然后即可看到当前Activity启动的是哪个,并且能看到启动的参数。

如何知道当前App的布局状况

如果你的项目中集成了stetho,打开你的chrome浏览器,输入

chrome://inspect/
复制代码

然后你就能进入到一个页面

点击inspect即可进入到布局管理中

这里打马赛克的位置就是布局文件,鼠标放在上面,手机上会实时显示这个布局所在的区域,用蓝色高亮。十分方便。

转载于:https://juejin.im/post/5cd4e3ac6fb9a032453bc904

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值