Debug your app! 讲讲Android Studio の Debug调试那些事(一)
Debug your app! 讲讲Android Studio の Debug调试那些事(二)
调试应用
Android Studio 提供了一个调试程序,用来执行以下操作以及更多操作:
- 选择要在哪个设备上调试应用。
- 在 Java、Kotlin 和 C/C++ 代码中设置断点。
- 在运行时检查变量和对表达式求值。
准备工作
- 启用USB调试
如果使用的是IDE自带模拟器,默认会开启。如果在真机,需要去 开发者模式-USB调试 开启 - 运行可调试的构建变体
在build.gradle中将debuggable true
添加进去,一般默认生成。android { buildTypes { customDebugType { debuggable true ... } } }
开始调试
- 打断点
断点怎么打,回头再说已更: - 选择调试,图中依次为选择要调试的APP、选择调试设备、开始调试
- 点击调试,就那个小虫子(bug)图标
- 此时会弹出debug工具视图,如果未打开,手动去上方工具栏View - Tool Windows - Debug或者直接Alt + 5
(我改了界面MD图标,可能和你原生看到的不太一样,没关系,每个按钮是干啥的我也不准备讲,鼠标放上去就有解释,就字面意思没啥人对这个有问题 吧。。)
将调试程序连接到正在运行的应用
如果应用已在设备上运行,则无需重启应用即可开始调试,具体操作步骤如下:
- 点击工具栏Attach debugger to Android process按钮,图标原生是小虫子加箭头,MD图标是个插头
- 在Choose Process对话框中,选择要将调试程序连接到的进程。
- 如果设备已取得root权限,则可以勾选Show all processes以查看所有进程。
- 从Debugger下拉菜单中,可以选择其他调试类型。默认情况下会使用Auto调试类型,具体取决于项目包含Java代码还是C/C++代码。
- 点击OK
看Logcat
可以在代码中写入日志消息,在Logcat中查看运行在设备上的应用产生的信息以及有关异常的堆栈轨迹。
import android.util.Log;
...
public class MyActivity extends Activity {
private static final String TAG = MyActivity.class.getSimpleName();
...
@Override
public void onCreate(Bundle savedInstanceState) {
...
if (savedInstanceState != null) {
Log.d(TAG, "onCreate() Restoring previous state");
/* restore state */
} else {
Log.d(TAG, "onCreate() No saved state available");
/* initialize app */
}
}
}
void someOtherMethod() {
try {
...
} catch (SomeException e) {
Log.d(TAG, "someOtherMethod()", e);
}
}
断点使用
Android Studio支持几种类型的断点,这些断点可触发不同的调试操作。最常见的类型是行断点,用于在指定的代码行暂停应用的执行。暂停时,可以检查变量,对表达式求值,然后继续逐行执行,以确定运行时错误的原因。
如需添加行断点,请按以下步骤操作:
- 找到您要暂停执行的代码行,然后点击该代码行的左侧边线,或将文字插入点置于该行上并按 Ctrl+F8(在 Mac 上,按 Command+F8)。
- 如果应用已在运行,不必更新应用便可添加断点 - 只需点击上面说的Attach debugger to Android proccess按钮。
当代码执行到达该断点时,Android Studio会暂停应用的执行。随后可以使用Debugger标签页中的工具确定应用的状态:(因为我图标改了,截图没多大意义,对照文字去查看比较好)
- 如需检查变量的对象树,在Variables视图中将其展开。如果Variables视图不可见,点击Restore Variables View。
- 如需在当前执行点对表达式求值,点击Evaluate Expression图标。
- 如需前进到代码中的下一行(而不进入方法),点击 Step Over 图标 。
- 如需前进到方法调用内的第一行,点击Step Into图标 。
- 如需前进到当前方法之外的下一行,点击Step Out图标 。
- 如需继续正常运行应用,点击Resume Program图标 。
查看和配置断点
如需查看所有断点并配置断点设置,点击Debug窗口左侧的View Breakpoints图标,会弹出Breakpoints窗口:
如图列出了当前的所有断点,并包括每个断点的行为设置
调试窗口帧
在Debugger窗口的Frames窗格中,可以检查导致遇到当前断点的堆栈帧。这样就可以浏览和检查堆栈帧,同时还可以检查应用中的线程列表。如需选择线程,使用线程选择器下拉列表并查看其堆栈帧。点击帧中的元素会在编辑器中打开源代码。
查看和更改资源值显示格式
在调试模式下可以查看Java代码中的变量的资源值并为其选择其他显示格式。在显示了Variables标签页并选择了帧的情况下,执行以下操作:
-
在 Variables 列表中,右键点击资源行的任意位置以显示下拉列表。
-
在下拉列表中选择 View as,然后选择您要使用的格式。
可供选择的格式取决于选定资源的数据类型。可能会看到以下一个或多个选项:
- Class:显示类定义。
- toString:显示字符串格式。
- Object:显示对象(类实例)定义。
- Array:以数组格式显示。
- Timestamp:按
yyyy-mm-dd hh:mm:ss
格式显示日期和时间。 - Auto:Android Studio根据数据类型选择最合适的格式。
- Binary:显示使用 0 和 1 表示的二进制值。
- MeasureSpec:从父项传递给选定子项的值。
- Hex:显示为十六进制值。
- Primitive:显示为使用原始数据类型表示的数值。
- Integer:显示 Integer 类型的数值。
先到这吧
版权属于:Vergil Wu
本文链接:https://www.vergil.com.cn/320.html
转载时须注明出处及本声明