3. 使用断点进行调试

3. 使用断点进行调试

3. 使用断点进行调试

在学习日志记录时,您学习了有策略地放置日志,以帮助发现 bug 并验证 bug 是否已修复。不过,如果遇到并非由您引入的 bug,有时候就无法确定应该在何处放入日志语句或输出哪些变量。通常,您只能在运行时找到这些信息。

fun division() {

val numerator = 60

var denominator = 4

repeat(5) {

Log.v(TAG, "${numerator / denominator}")

denominator--

}

}

这时候断点就派上用场了!即使您根据堆栈轨迹中的信息大致知道是什么导致了 bug,也可以添加断点,以此作为特定代码行的停止符号。到达某个断点后,代码会暂停执行,使您能够在运行时使用其他调试工具,以便仔细查看发生的情况和问题所在。

连接调试程序

在后台,Android Studio 会使用一个名为 Android 调试桥(简称 ADB)的工具。这是一个集成到 Android Studio 中的命令行工具,可以为正在运行的应用提供调试功能,如断点。用于调试的工具通常称为“调试程序”。

为了将调试程序用于(连接到)应用,您不能像以前那样简单地通过依次点击 Run > Run 来运行应用,而应通过依次点击 Run > Debug ‘app' 来运行应用。

向项目中添加断点

执行以下步骤来看看断点的实际运用:

点击您希望在其位置暂停的行号旁边的空白处来添加一个断点。该行号旁边会出现一个点,并且该行会突出显示。

依次点击 Run > Debug ‘app' 或使用工具栏中的 图标,在连接了调试程序的情况下运行应用。应用启动时,您应该会看到如下所示的屏幕:

应用启动后,您会看到断点被激活时突出显示。

在您之前查看 Logcat 窗口的屏幕底部,系统打开了一个新的 Debug 标签页。

左侧是函数列表,它们与堆栈轨迹中显示的列表相同。右侧是一个窗格,您可以在其中查看当前函数(即 division())中各个变量的值。顶部还提供了按钮,可以帮助您在已暂停的程序中导航。您将最常用的一个按钮是 Step Over,点按后会执行突出显示的一行代码。

执行以下步骤来调试代码:

到达断点后,第 19 行(声明 numerator 变量)现已突出显示,但尚未运行。使用 Step Over 按钮执行第 19 行。现在,第 20 行将突出显示。

在第 22 行设置一个断点。这是出现除法的位置,也是堆栈轨迹报告异常的那一行。

使用 Debug 窗口左侧的 Resume Program 按钮转到下一个断点,并运行 division() 函数的其余部分。

请注意,在第 17 行停止了执行,未执行该行。

每个变量(numerator 和 denominator)的值都显示在其声明旁边。您可以在“Debug”窗口的 Variables 标签页中看到这些变量的值。

再按“Debug”窗口左侧的 Resume Program 按钮 4 次。每次循环暂停并观察 numerator 和 denominator 的值。在最后一次迭代时,numerator 应该为 60,denominator 应该为 0。但不能将 60 除以 0!

现在,您已经知道了导致 bug 的确切代码行,并且知道了确切的原因。和之前一样,您可以通过将重复代码的次数从 5 更改为 4 来修复 bug。

fun division() {

val numerator = 60

var denominator = 4

repeat(4) {

Log.v(TAG, "${numerator / denominator}")

denominator--

}

}

提示:如需移除某个断点,请点击显示在行号旁边的点。

相关推荐

【感恩节贺卡】16种感恩节贺卡和手工,材料简单,效果完美,看完就会做!
王者荣耀S14赛季野区变动 蹲草丛更需技巧
365bet官网注册

王者荣耀S14赛季野区变动 蹲草丛更需技巧

📅 08-02 👁️ 191
《龙珠直播》如何开启直播的方法介绍
365bet体育开户官网

《龙珠直播》如何开启直播的方法介绍

📅 07-06 👁️ 7650