android不可不知调试技巧

3 篇文章 0 订阅
2 篇文章 0 订阅

目录

1、条件断点

2、评估表达式(Evaluate Expression)

3、日志断点

4、方法断点

5、异常断点

6、Field WatchPoint


1、条件断点

假设我们列表循环的某个元素时候才暂停,就用这种方式。具体方式在循环列表打断点,对着断点右键一下,然后会弹出有一行填写condition的,这里就填写条件即可,如下面的例子。

2、评估表达式(Evaluate Expression)

这种可以对断点的值按键ALT+F8,我们再去执行一些函数,想求得自己最后想要的值

3、日志断点

很多时候我们调试的时候更多的是打印日志定位异常代码,缩小范围之后再使用断点解决问题;所以经常做的事情就是在代码里面添加日志信息,输出函数参数,返回信息,输出我们感兴趣的变量信息等。

具体做法:首先我们在想要输出信息的地方下一个断点;然后右键这个断点,在出现的设置框里面把这个断点的 suspend 属性设置为 False ,这样虽然叫做“断点”,但是并不会真正断下来;然后,我们在 log message 里面填上我们想要输出的日志信息。如下图(注意标红位置):

4、方法断点

方法断点会在进入或退出特定方法时暂停应用的执行。暂停时,您可以检查变量,对表达式求值,然后继续逐行执行,以确定运行时错误的原因。具体方法:在方法第一行打上断点,标志有不同。

5、异常断点

有时候我们只对特定的异常才会感兴趣,那么我们可以自定义补抓相关异常。

具体做法:在调试窗口点击1处,再2处点击增加要补抓什么样异常

6、Field WatchPoint

在上面我们添加异常断点的时候,点击加号的时候,有四个选项;第一个就是我们前面所说的第二种方法断点的添加方式,第三个是异常断点,那么第二个 Field WatchPoint 是干什么的呢?

有没有这样一种场景:你发现某个值莫名其妙滴不知道什么时候被谁给修改了,罪魁祸首是谁?Java虽然是值传递,但是引用也可以是值;对象全部存放在堆上面,而堆是被所有线程共享的,因此在非常复杂的场景下,你根本不知道这些共享变量被谁修改了,这样非常危险;在多线程环境下,不变性是一个很重要的特性,我们看到高并发的语言诸如 Erlang, Scala 对于这种不变性都有着某种程度的支持。

具体做法:对着变量那行打断点,然后选择第二个;可以查看变量多种状态改变的断点设置;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值