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匹配模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/43802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 入门03:函数与作用域

往期回顾: C 入门01:初识 C-CSDN博客C 入门02:控制结构和循环-CSDN博客 一、前言 在前面的文章学习中,我们了解了C语言的基础,包括如何定义变量来存储数据,以及如何利用输入输出流实现程序与用户之间的无缝…

华为机考真题 -- 找朋友

题目描述: 在学校中,N 个小朋友站成一队, 第 i 个小朋友的身高为 height[i],第 i 个小朋友可以看到的第一个比自己身高更高的小朋友 j,那么 j 是 i 的好朋友(要求 j >i)。请重新生成一个列表,对应位置的输出是每个小朋友的好朋友位置,如果没有看到好朋友,请在该位置…

微软清华提出全新预训练范式,指令预训练让8B模型实力暴涨!实力碾压70B模型

现在的大模型训练通常会包括两个阶段: 一是无监督的预训练,即通过因果语言建模预测下一个token生成的概率。该方法无需标注数据,这意味着可以利用大规模的数据学习到语言的通用特征和模式。 二是指令微调,即通过自然语言指令构建…

Python面试题:请解释什么是鸭子类型(duck typing)?

鸭子类型(Duck Typing)是一种动态类型语言中的概念,它基于对象的行为(方法和属性)而不是其实际类型进行判断。这个概念源自詹姆斯惠特科姆赖利的谚语: “如果它走起来像鸭子,叫起来像鸭子&#…

通过高德地图 JS API实现单击鼠标进行标注

效果图: 核心代码: <template><a-modal title="选择地图所在位置" :width="width" :visible="visible" @ok="handleOk" @cancel="handleCancel" cancelText="关闭"><div class="location-…

场外期权有交割日吗?场外期权应该怎么交割?

今天带你了解场外期权有交割日吗&#xff1f;场外期权应该怎么交割&#xff1f;场外个股期权是一种非标准化的金融衍生品&#xff0c;它允许投资者在未来某一特定日期以特定价格买入或卖出某一特定股票。 交割日就是买卖双方进行交割的日期,期权合约具有到期日,到期日的后一天…

WEB安全-文件上传漏洞

1 需求 2 接口 3 MIME类型 在Web开发中&#xff0c;MIME&#xff08;Multipurpose Internet Mail Extensions&#xff09;类型用于标识和表示文档的格式。这些类型在HTTP请求和响应头中扮演着重要的角色&#xff0c;告诉浏览器如何解释和处理接收到的资源12。 以下是一些Web开发…

ChatGPT:Java Stream 的疑问

ChatGPT&#xff1a;Java Stream 的疑问 解释一下 List<SupplierVm> collect tSupplierPage.getRecords().stream().map(item ->{SupplierVm supplierVm new SupplierVm();BeanUtils.copyProperties(item, supplierVm);return supplierVm;}).collect(Collectors.to…

【JavaScript】具有 iterable 接口的数据结构

具有 iterable 接口的数据结构指的是可以通过迭代器&#xff08;Iterator&#xff09;访问其成员的数据结构。在 JavaScript 中&#xff0c;具有 iterable 接口的数据结构包括数组&#xff08;Array&#xff09;、字符串&#xff08;String&#xff09;、Set、Map 等。这些数据…

C电池 和 D 电池的作用和类型详解及其之间的区别

C 和 D 电池是我们日常生活中必不可少的部件。它们通常用于高功率设备。例如手电筒和玩具。 D 型电池和 C 型电池是两种常见的电池类型。它们是一次性圆柱形电池。您可以在很多设备上使用它们。虽然它们有很多相似之处&#xff0c;但它们也有不同的特点。这些特点使它们适合某…

如何用qq邮箱注册outlook邮箱

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ​ 目录 第一步输入qq邮箱 第二步…

数据类型及数据块认知

西门子STEP7编程语言 梯形图(LAD) 功能块图(FBD) 语句表(STL) 其中梯形图和功能块图可以相互转换 CPU常用数据区 信号输入区 I 信号输出区 Q 程序中表现形式&#xff0c;IX.X/QX.X;IWX/QWX-访问的是CPU输出输入过程映像区 另一种形式IWX:P/QWX:P-访问的是信号端口地址&#xf…

深度整合全球资源,分贝通打造高效、合规的海外差旅管理平台

在全球化商业活动的背景下,中国企业出海已成为常态。然而,随着海外差旅市场的全面增长,企业在海外支出管理上面临诸多挑战。据2023年数据显示,分贝通出海差旅业务GMV同比增长高达500倍,这一增长背后隐藏着企业对于更省钱、更高效管控方式的迫切需求。 面对与日俱增的开支,企业开…

js对象的方法速览---数组的静态方法,实例方法和属性合集,各包含一个示例

tip&#xff1a; 本文仅作为查找和基本使用的展示&#xff0c;需要深入了解这些方法的使用请参考&#xff1a;Object - JavaScript | MDN (mozilla.org) 可以通过目录快速锁定需要查找的方法和查看它的使用 目录 tip&#xff1a; 新建一个对象 实例属性 实例方法 hasOwn…

Websocket 替代方案:如何使用 Firestore 监听实时事件

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 ​在现代 Web 开发中,实时更新功能对于许多应用程序(如聊天应用、协作工具和在线游戏)都是必不可少的。虽然 WebSocket 是一种常用的实时通信技术,但 Google 的 Firestore 也提供了一种强大的替代方案,使得实时监听变得…

Golang中defer和return顺序

在Golang中&#xff0c;defer 和 return 的执行顺序是一个重要的特性&#xff0c;它们的执行顺序如下&#xff1a; return语句不是一条单独的语句&#xff0c;实际上&#xff0c;它是由赋值和返回两部分组成的。赋值步骤会先执行&#xff0c;这一步会计算return语句中的表达式…

Linux安装Docker以及Docker Componse

一、安装前准备工作 1.1 查看服务器系统版本以及内核版本 cat /etc/redhat-release 1.2 查看服务器内核版本 uname -r这里我们使用的是CentOS 7.4 系统&#xff0c;内核版本为3.10 1.3 安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm21.4 设置…

赛氪网受邀出席浙江省应用数学研究会,共启数学教育与竞赛新篇章

2024年7月5日&#xff0c;浙江省应用数学研究会在风景如画的嘉兴市成功举办了2024年学术研讨会暨第七届第六次理事会工作会议的首日活动。作为技术支持单位&#xff0c;赛氪网受邀参与此次盛会&#xff0c;彰显了其在数学教育及竞赛领域的深厚实力与积极贡献。 开幕式由嘉兴大学…

linux watchdog 子系统

目录 一、watchdog 子系统二、关键数据结构2.1 watchdog_device2.2 watchdog_ops2.3 watchdog_info 三、重要流程3.1 watchdog 初始化3.2 watchdog 设备注册3.3 watchdog 设备文件操作函数3.4 watchdog 喂狗用户空间 watchdog&#xff08;busybox&#xff09;内核空间喂狗疑问 …

生成随机密码

生成8位无重复的密码&#xff08;可以包含数字、大小写字母&#xff09; import random import string character string.digits string.ascii_letters password .join(random.sample(character, 8)) print(f"生成的随机密码为:{password}")