美文网首页
Android Studio 调试完全掌控

Android Studio 调试完全掌控

作者: 愈强 | 来源:发表于2022-01-05 23:06 被阅读0次

本文介绍使用Android Studio开发应用程序时进行断点调试相关的知识。干货满满,适合初学者学习。

1. 调试模式

想要进行断点调试,首先要进入调试模式。

1.1 开发者模式

首先要做手机上开启开发者模式,然后在开发者模式中打开“USB调试”开关,有些设备上还要开启“USB安装”、“USB调试”等开关,这要看具体的手机设备系统。


图1-1开发者选项

此时使用电脑连接手机时,会弹出USB调试授权弹框,点击确定即可。


图1-2 授权弹框

关于如何打开“开发者模式”,不同的手机有不同的方式,可以在网上搜索。

1.1 连接已运行的进程

当设备连接到电脑后,在Android Studio的工具栏就可以看到已连接的设备了。


图1-3 已连接的设备

点击右侧这个按钮“Attach Debugger to Android Process”,弹出进程选择弹框。


图1-4 调试按钮 图1-5 选择要调试的进程

选择进程并点击确认按钮,即可进入调试模式。

1.2 运行并连接

点击这个“Debug ‘app’”按钮,可以安装完应用后立即进入调试模式。


图1-6 运行并连接

1.3 启动时连接

有时我们希望调试已安装应用的启动过程,但是使用“Debug 'app'”按钮会重新编译安装,这样会很慢且覆盖掉现有的应用,此时可以在手机上设定“选择调试应用”,并打开“等待调试器”:


图1-7 等待调试应用

这时在打开“Test”应用(已选择调试的应用),就会弹出等待调试对话框


图1-8 等待连接调试 此时 点击“Attach Debugger to Android Process”即可进入应用调试模式。 图1-9 等待调试应用时,点此按钮进入调整模式

1.4 连接非主进程

一次调试连接过程只能对一个进程进行调试,如果要调试非主进程,需要在选择调试进程界面选择期望的进程。


图1-10 调试多个进程

2. 断点

2.1 断点简介

在代码区左侧点击即可添加断点


图2-1 添加断点

当代码执行到断点处会暂停


图2-2 代码在断点处停止运行

断点状态下,可以在Variables窗口(图中右下侧窗口)查看当前环境下的变量信息,同时也可以修改变量的内容。

点击Evaluate Expression...按钮,弹出表达式计算弹框,在这里可以执行任何语句或查看任何变量的内容。


图2-3 Evaluate Expression...按钮 图2-4 在Evaluate弹框中查看“this”的内容

2.2 条件断点

在断点上点击弹出断点菜单,勾选“Condition”后,可以在下面的框中输入任意条件语句,只有当此处的条件为true的时候才会触发断点。


图2-5 在断点处设置条件

2.3 非中断断点

在图2-5中取消勾选“Suspend”选项,断点就变成了非中断断点。顾名思义,非中断断点并不会中断程序的执行。
勾选“Evaluate and log”并在下面的输入框中输入任意语句,在代码运行到这个位置的时候就会执行该语句。一般情况下可以输出log或者改变某个变量的值。

如果输出log,可以在调试模式的Console窗口中看到输出


图2-6 从Console窗口看到日志输出

2.4 变量&方法断点

可以在变量和方法上添加断点,代码将在变量改变(或访问时,可在断点菜单中设置)和方法调用(进入或退出,可设置)时中断,当然也可以执行指定的语句。


图2-7 在变量和方法上添加断点

值得注意的时,在方法上添加断点会导致程序运行异常缓慢。

2.5 异常断点

点击Debug菜单中的“View Breakpoints...”按钮(如图2-8),弹出断点管理页面。勾选“Java Exception Breakpoints”,应用中任意代码崩溃时都会触发断点。


图2-8 异常断点

在图2-8中还能够看到添加的所有断点并进行管理。

2.5 多线程断点

一个线程只能被一个断点阻塞,所以不存在在多个断点间切换的问题。
如果在不同的线程都打了断点,且都处于阻塞中,那如何切换不同的阻塞线程呢?
在Frames页面点击顶部的下拉框,下拉部分展示了当前的线程信息,其中包含了正在查看的阻塞线程(红色对勾项)和其他正被断点阻塞的线程(红点项),选择其他线程并点击,则可以切换查看阻塞的其他线程。


图2-9 切换不同的阻塞线程

2.6 屏蔽所有断点

点击Mute Breakpoints 按钮可以快速屏蔽所有断点,这避免了删除辛辛苦苦添加的断点。


图2-10 屏蔽所有断点按钮

3. 跟进调试

图3-1 调试界面菜单

上图是调试界面的菜单按钮,下面从左向右依次介绍各按钮的功能。

  1. Show Execution Point 点击该按钮可以快速定位到正在中断的代码位置。
  2. Step Over 这个是单步调试,可在断点处一行一行的执行代码
  3. Step Into 点击这个按钮可以进入到当前行的方法内部
  4. Force Step Into 使用Step Info按钮无法进入到某些jdk方法中,此时可以用这个按钮
  5. Step Out 这个和Step Into 功能相反,会从当前正在执行的方法返回
  6. Drop Frame 丢弃当前帧,这会使断点回到当前方法调用前的位置。需要注意的是,虽然调用栈可以回滚,但是已经影响的变量数据并不会还原。低版本的Android Studio可能不支持这个功能,我所用的4.0.2上这个按钮是灰色的,不支持点击。
  7. Run to Cursor 点击这个按钮会执行到光标所在的行。

以上功能都存在快捷键,或者可以自定义快捷键。熟记并使用快捷键可以有效提高调试效率。除此之外还有其他仅提供快捷键的调试工具,可以通过查看快捷键表去了解。

4. 问题列表

4.1 上文中提到的某些窗口看不到

在Debug窗口的右上方点击这个按钮,即可打开或关不指定的窗口。


图4-1 Debug模式内的窗口管理

4.2 如何调试Release包?

可以参考这篇文章。

4.3 设备问题

在华为设备上,如果断点在生命周期方法上,那么几秒后应用就会崩溃从而无法继续调试。此时可以采用非中断断点,在断点处添加log或修改变量进行调试。

相关文章

网友评论

      本文标题:Android Studio 调试完全掌控

      本文链接:https://www.haomeiwen.com/subject/cimctrtx.html