Android开发中的程序调试

来源:互联网 发布:网络与端口有何区别 编辑:程序博客网 时间:2024/06/03 23:39

一般来说我们有两种办法调试一个debuggable的apk;
   其一是下好断点,然后用debug模式编译安装这个app;
   其二是 attach process,点击Android Studio工具栏上的图标会弹出一个对话框,在对话框中选择要调试的进程。
 
第二种方法比较常用,我们可以在启动apk之后,直接下断点,然后attach process到制定进程,条件触发之后就可以直接进入调试模式。

条件断点

给程序添加断点后,右击断点,在对话框中输入条件值



异常断点调试

在有些情况下,我们只对某些特定的异常感兴趣,或者我们只对异常感兴趣;我们希望只要程序发生异常程序就能断下来;这样更问题的根源就一目了然了。
Android Studio给了我们这个能力!那就是异常断点!可以在特定异常发生的时候,直接让整个程序断下来;如果你对所有异常感兴趣,直接 Throwable 即可。
具体做法是,进入 Run -> View BreakPoints 或者使用快捷键打开断点设置窗口;如下图:
选中要关心的异常,或者点击“+”号添加一个异常断点。


点击左上角的 ➕ ,会出现一个选择框;选择Exception Breakpoint;然后会出现一个对话框,选择你感兴趣的异常:
 

字段断点 Field WatchPoint
在上面我们添加异常断点的时候,点击加号的时候,有四个选项;第一个就是我们前面所说的第二种方法断点的添加方式,第三个是异常断点,那么第二个 Field WatchPoint 是干什么的呢?
有没有这样一种场景:你发现某个值莫名其妙滴不知道什么时候被谁给修改了,罪魁祸首是谁?Java虽然是值传递,但是引用也可以是值;对象全部存放在堆上面,而堆是被所有线程共享的,因此在非常复杂的场景下,你根本不知道这些共享变量被谁修改了,这样非常危险;在多线程环境下,不变性是一个很重要的特性,我们看到高并发的语言诸如 Erlang, Scala 对于这种不变性都有着某种程度的支持。
我们使用Field WatchPoint的功能可以在某个Field被访问或者修改的时候让程序断下来;



0 0
原创粉丝点击