Android开发调试技巧

调试方式

应用日志

Android Studio 中的 Logcat 窗口会显示系统消息,例如在进行垃圾回收时显示的消息,以及使用 Log 类添加到应用的消息。此窗口可以实时显示消息,也可以保留历史记录,因此您可以查看较早的消息。

要仅显示感兴趣的信息,您可以创建过滤器、修改消息中显示的信息量、设置优先级、仅显示通过应用代码生成的消息以及搜索日志。默认情况下,logcat 仅显示与最近运行的应用相关的日志输出。

如果应用抛出异常,logcat 会显示一条消息,后跟相关联的堆栈轨迹,其中包含指向相应代码行的链接。

查看应用日志

要显示应用的日志消息,请执行以下操作:

在设备上构建和运行应用。

  • 依次点击 View > Tool Windows > Logcat(或点击工具窗口栏中的 Logcat 图标)

  • Logcat 窗口会显示所选应用(从窗口顶部的下拉列表中选择)的日志消息,如图所示
    Android开发调试技巧Logcat 工具栏中提供以下按钮:

    1. Clear logcat :点击此按钮可以清除显示的日志。
    2. Scroll to the end :点击此按钮可以跳转到日志底部并查看最新的日志消息。如果您先点击此按钮,然后点击日志中的某一行,则视图会在相应位置暂停滚动。
    3. Up the stack trace 和 Down the stack trace :点击相应按钮可以在日志的堆栈轨迹中进行上下导航,从而选择输出的异常中显示的后续文件名(以及在编辑器中查看相应行号)。这与您在日志中点击某个文件名时的行为相同。
    4. Use soft wraps :点击此按钮可以启用换行并防止水平滚动(尽管所有非间断字符串仍然需要进行水平滚动)。
    5. Print :点击此按钮可以输出 logcat 消息。在显示的对话框中选择输出偏好设置后,您还可以选择将其保存为 PDF 格式。
    6. Restart :点击此按钮可以清除日志并重启 logcat。与 Clear logcat 按钮不同,此按钮可以恢复并显示之前的日志消息,因此当 Logcat 无响应而您又不想失去日志消息时,此按钮是最有用的。
    7. Logcat header :点击此按钮可以打开 Configure Logcat Header 对话框,在该对话框中,您可以自定义各个 logcat 消息的外观,例如是否显示日期和时间。
    8. Screen capture :点击此按钮可以截取屏幕截图。
    9. Screen record :点击此按钮可以录制设备屏幕的视频(时长不超过 3 分钟)。

过滤 logcat 消息

  1. 在过滤器菜单中,选择一个过滤选项:
  • Show only selected application:仅显示通过应用代码生成的消息(默认选项)。Logcat 使用正在运行的应用的 PID 来过滤日志消息。
  • No Filters:不应用过滤器。无论您选择哪个进程,logcat 都会显示设备中的所有日志消息。
  • Edit Filter Configuration:创建或修改自定义过滤器。例如,您可以创建一个过滤器,以同时查看两个应用中的日志消息。
    定义过滤器后,您还可以在菜单中选择它们。要从菜单中移除过滤器,删除即可。
  1. 如果您选择了 Edit Filter Configuration,请创建或修改过滤器:
    a. 在“Create New Logcat Filter”对话框中指定过滤器参数:
    * Filter Name:输入要设定的过滤器的名称,或者从左侧窗格中进行选择以修改现有过滤器。名称只能包含小写字符、下划线和数字。
    * Log Tag:(可选)指定标记
    * Log Message:(可选)指定日志消息文本
    * Package Name:(可选)指定软件包名称
    * PID:(可选)指定进程 ID
    * Log Level:(可选)选择日志级别
    * Regex:选择此选项可以为相应参数使用正则表达式语法。

    b. 点击 +,将过滤器定义添加到左侧窗格中。
    要移除过滤器,请在左侧窗格中将其选中,然后点击 -。
    c. 完成后,点击 OK。
    如果您认为并没有看到想要检查的日志消息,请尝试选择 No filters 并搜索特定日志消息。

Log折叠

日常开发的时候获得我们的【结果 log】之前会有很多没用但是又必须打印的 log,这样当我们需要查找【结果 log】的时候就会很麻烦。我们可以选关键字【右键】,选择【Fold Lines Like This】,如下图所示:
Android开发调试技巧
这样我们相同关键字的 log 就会被折叠,当然也可以展开查看详细 log
Android开发调试技巧

断点调试

使用断点

Android Studio 支持使用若干类型的断点来触发不同的调试操作。最常见的类型是行断点,用于在指定的代码行暂停应用的执行。暂停时,您可以检查变量,对表达式求值,然后继续逐行执行,以确定运行时错误的原因。

要添加行断点,请按以下步骤操作:

  1. 找到您要暂停执行的代码行,然后点击该代码行的左侧空白处,或将光标置于该行上并按 Ctrl+F8(在 Mac 上,按 Command+F8)。
  2. 如果您的应用已在运行,您不必更新应用便可添加断点 - 只需点击 Attach debugger to Android proccess 图标 。否则,请点击 Debug 图标 开始调试。
    Android开发调试技巧
    如图. 当您设置断点时,相应的代码行旁会出现一个红点

当您的代码执行到达该断点时,Android Studio 会暂停应用的执行。您随后可以使用 Debugger 标签页中的工具来确定应用的状态:
Android开发调试技巧

查看和配置断点

要查看所有断点并配置断点设置,请点击 Debug 窗口左侧的 View Breakpoints 图标 。此时将显示 Breakpoints 窗口
Android开发调试技巧如上图所示为 Kotlin Function Breakpoints。
Android开发调试技巧
如上图所示: 配置断点,在Console打印相应的log。

调试技巧

条件断点

Android开发调试技巧
如图: 通过设置指定的条件,可以在程序执行到满足相应的条件时才进入断点调试。

日志断点

Android开发调试技巧
如图: 可以在断点处输入表达式/变量,在Console输出表达式结果/变量值。该用法可以在不重新编译代码的情况下增加log输出,定位问题。还可以做打桩测试,在指定位置修改变量的值,达到执行目标代码进行验证,可以在测试正常情况下很难进入的分支代码可靠性时使用该方法验证分支代码。

异常断点

Android开发调试技巧
如图: 可以捕获发生的异常,定位到异常代码。

参考文献

Android 开发者-Android Studio-用户指南-调试应用.
Android 开发者-Android Studio-用户指南-使用 Logcat 写入和查看日志.
Android StudioDebug调试详细大全
Android Studio Debug 的 9 个小技巧