Android应用程序调试Logcat的使用

Android的程序调试主要使用Logcat进行,本节主要介绍Logcat的使用。

  1. 开启调试模式

使用Android Studio进行程序调试,首先需要连接虚拟Android设备或真实Android设备,设备上需要启用调试功能。

虚拟Android设备默认情况下会启用调试功能。对于真实Android设备,需要在设备开发者选项中启用调试功能。Android设备的开发者选项一般在设置App里可以找到,在该界面中可以配置一些系统行为来帮助分析和调试应用性能,例如,可以启用 USB 调试、捕获 bug 报告、启用点按的视觉反馈、在窗口 surface 更新时刷写 surface、使用 GPU 渲染 2D 图形等等。

不同版本的Android启用开发者选项的方法不同,在 Android 4.1 及更低版本上,开发者选项界面在默认情况下处于启用状态。在 Android 4.2 及更高版本上,必须手动启用此界面。

大部分Android设备启动开发者选项的方法是找到“设置”中的“关于手机”,再找到“版本号”,连续点按版本号选项七次,直到看到 “您已处于开发者模式,无需进行此操作。” 或类似消息。

注意在某些设备上,开发者选项界面所在的位置或所用的名称可能有所不同,具体请搜索各自品牌手机开发使用说明。

在开发者选项界面需要启用 USB 调试,以便 Android Studio 和其他 SDK 工具能够通过 USB 连接时识别设备,然后才能使用调试工具和其他工具,如图1所示。

图1 开启开发者选项和USB调试

Android 11及以上系统还支持无线调式,无需使用数据线即可进行程序调试,无线调试开启方法与USB调试类似,具体使用步骤读者可查阅相关资料。

2.使用 Logcat 查看日志

Android Studio中的 Logcat 窗口会实时显示设备日志,日志有来自在 Android 上运行的服务的消息或系统消息、当前调试应用的消息。

如需查看应用的日志消息,执行以下操作。

1)在 Android Studio中,在实体设备或模拟器上构建并运行应用。

2)从菜单栏中依次选择 View → Tool Windows → Logcat。

3)默认情况下,Logcat 会滚动到末尾。单击 Logcat 视图或使用鼠标滚轮向上滚动即可关闭此功能。如需重新开启,请单击工具栏中的“Scroll to the End”图标,还可以使用工具栏清除、暂停或重启 Logcat。

如果应用抛出异常,Logcat 会显示一条消息,后跟相关联的堆栈轨迹,其中包含指向相应代码行的链接,如图2图中蓝色字“MainActivty.java:19”即表示错误出现在MainActivty.java文件的第19行,单击该蓝色字即可跳转到出错代码处。

图2  Logcat示例

3.搜索查询日志

在 Android Studio中,可以直接从主查询字段生成键值对搜索所需日志。以下是可以在查询中使用的键:

  1. tag:与日志条目的 tag 字段匹配。
  2. package:与日志记录应用的软件包名称匹配。
  3. process:与日志记录应用的进程名称匹配。
  4. message:与日志条目的消息部分匹配。
  5. level:与指定或更高严重级别的日志匹配,例如 DEBUG。
  6. age:如果条目时间戳是最近的,则匹配。值要指定为数字,后跟表示时间单位的字母:s 表示秒,m 表示分钟,h 表示小时,d 表示天。例如,age: 5m 只会过滤过去 5 分钟内记录的消息。

如图3所示,在日志搜索框中输入tag,可以看到支持的tag匹配模式,包括精确匹配、包含、正则表达式匹配、不包含等。

图3  Logcat tag键值匹配模式

图4 Logcat message键值匹配模式

图5  Logcat package:mine匹配模式

大部分其他键同样有这些匹配模式,如图4所示是message键的匹配模式,除此之外,还有个特殊查询: package:mine,表示当前包名下的所有日志信息,如图5所示。

level 查询与 Logcat 消息的日志级别匹配,其中日志条目的级别大于或等于查询级别。例如,level:INFO 匹配日志级别为 INFO、WARN、ERROR 或 ASSERT 的任何日志条目,级别不区分大小写,如图6所示。有效级别包括:VERBOSE、DEBUG、INFO、WARN、ERROR 和 ASSERT。

图6  Logcat level:INFO匹配模式

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 22:50:06       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 22:50:06       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 22:50:06       57 阅读
  4. Python语言-面向对象

    2024-07-09 22:50:06       68 阅读

热门阅读

  1. cadence许可管理策略

    2024-07-09 22:50:06       20 阅读
  2. Android动态设置系统音量最大值

    2024-07-09 22:50:06       26 阅读
  3. Android Enable 和clickable

    2024-07-09 22:50:06       22 阅读
  4. 0. python面试常见问题

    2024-07-09 22:50:06       23 阅读
  5. 配置linux的yum镜像为阿里镜像源

    2024-07-09 22:50:06       19 阅读
  6. Docker一键部署PostGIS

    2024-07-09 22:50:06       20 阅读
  7. C语言编程2:常用的数据类型

    2024-07-09 22:50:06       23 阅读
  8. 秒验 iOS端授权页添加自定义按钮

    2024-07-09 22:50:06       21 阅读
  9. 代码随想录算法训练营:23/60

    2024-07-09 22:50:06       23 阅读
  10. Android Camera API发展历程

    2024-07-09 22:50:06       19 阅读
  11. 工作日常学习记录

    2024-07-09 22:50:06       24 阅读
  12. ELK的储存、分析功能介绍!

    2024-07-09 22:50:06       23 阅读
  13. Linux实战记录

    2024-07-09 22:50:06       23 阅读