AndroidStudio调试之旅
来源:互联网 发布:太原java工程师待遇 编辑:程序博客网 时间:2024/05/19 22:06
在平常开发中难免会写出一些bug,明显的bug通过分析代码可以找出来问题所在,但也会有一些隐藏很深的bug,单凭肉眼分析代码很难定位,这个时候就需要编译器协助,AndroidStudio就提供了非常强大的调试功能,帮助我们能快速定位解决bug,告别加班!!!
开启调试模式
首先了解下开启调试的方法,在AndroidStudio中开启调试模式有两种方法,即普通Debug和Attach debugger to Android process,Debug模式大家可能经常用到,感受应该都是比较慢,特别大工程,等待时间就更长了,而另一种相对来说就快很多。
针对Attach debugger 模式开启时会有提示选项 如下图:
Auto
如果希望 Android Studio 自动选择最合适的选项,请选择此类型。例如,项目包含任何 C 或 C++ 代码,Android Studio 会自动使用 Hybrid 调试类型。否则,Android Studio 会使用 Java 调试类型。
Java
调试以 Java 编写的代码,请选择此类型 - Java 调试程序会忽略原生代码中设置的任何断点或监视。
在早期AndroidStudio 还有如下选项,本人用的AS3.0目前只有Auto/Java
Native
只想使用 LLDB 来调试代码,请选择此类型。使用此调试类型时,Java 调试程序会话视图不可用。默认情况下,LLDB 只检查原生代码,而会忽略 Java 代码中的断点。如果也想调试 Java 代码,则应切换到 Auto 或 Hybrid 调试类型。
Hybrid
在调试 Java 代码与调试原生代码之间切换,请选择此类型。Android Studio 会将 Java 调试程序和 LLDB 都连接到当前应用进程,一个用于 Java 调试程序,一个用于 LLDB,这样一来,就不必重新启动应用或更改调试配置,便可同时对 Java 代码和原生代码中的断点进行检查
调试区域介绍
接下来了解下调试功能面板(以下就是整个调试区域图)
断点类型
左侧断点类型介绍
Java Line Breakpoints 执行到当前行触发此断点
Java Method Breakpoints 断点位置与方法名同行,愈加方便的观察参数和返回值
Java Field Watchpoints 断点位于某个字段属性声明位置,当字段被重新赋值时触发断点
Java Exception Breakpoints 当抛出某个异常时,自动触发
Exception/Symbolic Breakpoints 未知
右侧功能区介绍
Enable 断点是否可用
Suspend 执行到断点时,程序是否暂停
Condition 执行此断点条件
Log message to console 执行到此断点时,打印一行日志
Evaluate log 执行到此断点时,打印一样的自定义日志,可以包含程序中的变量或表达式
Remove once hit 断点触发后移除
高级调试应用
很多时候简单的调试对于复杂的逻辑定位比较困难,有时可能需要反复尝试才能找出问题所在。特别对于一些代码量庞大的类,如果普通调试时要跟踪某个变量的变化是比较费时的,还有一些对于网络请求场景,如果要修改传递异常的参数,只能手动改代码,然后重新开始调试,可以说相当麻烦。然后AndroidStudio已经提供了强大的调试功能,可以很方便在调试过程中实时跟踪变量值变化或修改,以及表达式操作,日志输入等。
增加观察变量
动态修改变量值
举个例子:对于方法test2中 ,只有当for循环里面条件满足 field1 == 3时才会给field1赋值并调用test3方法,此种场景中,如果当i < 100甚至 i< 1000,field1 == 90时,跟踪执行无疑会非常费时,但可以用更简单的方法实现,模拟满足这一条件,就是调试过程中改变field1成任意我们想要的值,怎么做呢?
很简单,点击此变量,鼠标右键Set Value或F2,然后就可以设置成任意我们想要的值就可以了。
条件断点
当执行到某一断点时,常规流程时,执行此断点,但由于某原因并不想立刻执行断点时,就可以使用条件断点,设置此断点执行条件,满足条件后再执行。
设置断点条件后,只有当field1变量满足field1 == 3 时该断点才会执行,并打印日志,此过程并不阻碍代码执行。
可以看到,当满足断点执行条件后才执行,并打印了断点日志,对于此种情况大家可以举一反三,相信实际开发中能很大程度上提高调试效率。
异常断点应用
程序崩溃应该是所有程序员最深恶痛绝的吧,在我这明明是正常的,到你那怎么会崩溃呢?对于明显的崩溃情况都能快速定位出来,而对于隐藏较深的崩溃情况,可能还一时半会找不出原因所在,无法快速定位怎么办呢?是时候尝试下异常断点了,这种无需手动打断点,只需开启调试模式并在断点视图上选中Java Exception Breakpoints,然后执行,慢慢等待Bug露出原形了。
开启异常断点
执行程序,跟踪结果
可以看到,整个过程并没有打任何断点,设置了异常断点后,发生Exception时自动定位代码行,并正常输出日志,是不是相当方便、快捷。
本文介绍内容对于AndroidStudio强大的调试功能,只是冰山一角,希望对大家有或多或少的帮助,减少Bug是我们的宗旨,远离加班是我们的理想。以后发现更好玩的调试功能继续完善!!!
- AndroidStudio调试之旅
- AndroidStudio断点调试
- AndroidStudio断点调试
- AndroidStudio Debug调试按钮
- AndroidStudio 断点调试
- AndroidStudio调试技巧
- 崩溃androidstudio调试
- AndroidStudio debug调试!
- AndroidStudio debug调试2
- AndroidStudio调试APP
- AndroidStudio 调试技巧
- AndroidStudio debug调试、单元测试
- AndroidStudio动态调试apk
- androidstudio动态调试smali
- Androidstudio 调试大全
- AndroidStudio调试smali代码
- AndroidStudio学习之旅(一)
- AndroidStudio ADB WIFI 无线调试
- Mac 安装homebrew
- java实现bmp图片信息隐写
- 【排序】例题:小哼买书(桶排序、冒泡排序、快速排序)
- request获取IP
- 图形用户界面
- AndroidStudio调试之旅
- Spring中的IOC
- Windows下maven3.0.4的安装和eclipse添加maven插件
- 1011. A+B和C (15)——C语言
- 值类型引用类型的传递
- 基本环境搭建
- Quartz教程--快速入门
- Idea各种设置
- poj 2106 Boolean Expressions(字符串bool表达式求值)