逮虾户!Android程序调试竟简单如斯(上)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本节讨论的是Android开发中老生常谈的程序调试。一个开发仔的日常离不开:写BUG和解BUG,特别是多人协作的时候,帮别人擦屁股(解Bug)的情况屡见不鲜。另外,接盘别人的项目,着手解Bug也能帮你快速的上手项目。综上,修炼好「调试」这门技能显得尤为重要。但是,但是感觉很多玩家还停留下无脑打印的阶段,所以有了这篇文章。

1.无脑静态调试


解释下这个标题:


  • 无脑觉得哪里有问题就打印哪里


  • 静态:每次想打印,都要去修改代码,然后重新运行程序。


适用于:想查看变量的值在某一时刻是否异常!


接着来说下两种常用的调试方法:


Toast打印法


新手Android开发仔最爱调试法,使用简便,仅需一行代码,轻松打印:


Toast.makeText(MainActivity.this, "Toast调试", Toast.LENGTH_SHORT).show();


方便是挺方便的,不过有一点要注意:Android 5.0后,如果把「消息通知的权限」 关闭掉的话,部分机型是不会显示Toast的!你还可以使用Snackbar来显示值进行调试:


Snackbar.make(父view, "Snackbar调试", Snackbar.LENGTH_SHORT).show();


或者其他变通的方法,比如在页面上添加一个TextView,把值直接显示在文本框上。


Log日志打印法


Toast调试是挺爽的,但是有两个问题:


  • 1.想调试打印多个值的话,Toast会弹个不停,毕竟同一时刻只有「一个」Toast显示在前台;


  • 2.Toast间隔一段时间后会消失,即使你设置了Toast.LENGTH_LONG


可能你一走神,没来得及看调试的值,Toast就消失了。我们着实需要一种无需担心调试 结果消失的方法——「Log日志打印法」,就是利用Android系统提供的Log类,在调试 的地方,把日志打印到「Logcat控制台」上,使用方法也非常简单:


Log.d("TAG", "Log调试")


当代码执行到这一句的时候,就会在Logcat控制台打印调试信息,另外Logcat默认 会打印出所有的日志信息,我们可以做一些过滤来定位到我们调试的日志信息。 首先是:

日志类型」,Android支持6种日志类型,依次如下:


  • Verbose:详细,所有类型的日志信息。


  • Debug:调试,调试用的日志信息。


  • Info:信息,正常使用时需要关注的日志信息。


  • Warn:警告,可能有问题,但没发生错误的日志信息。


  • Error:错误,运行时出现严重错误的日志信息。


  • Assert:断言。


温馨提示

不要上来就Error级别,我以前打Log全部用Log.e,原因是日志信息是红色的,好看... 觉得颜色不好看,你可以按照下述的操作进行自定义。


打开「Settings」-> 「Editor」->「Colors Scheme」->「Android Logcat」 选择日志类型,然后去掉勾选,然后点击选择颜色色值



这是笔者配色方案,读者可以自行调整为喜欢的颜色:


  • Assert:8F0005


  • Debug:0070BB


  • Error:FF0006


  • Info:48BB31


  • Verbose:BBBBBB


  • Warning:BBBB23


设置后的配色如图所示:



行吧,知道可以通过Log类打印调试和自定义Logcat配色,顺带也提提「日志过滤」的姿势吧。


  • 自定义Logcat日志头信息的显示内容:点击面板上的「Logcat Header」来设置日志头信息



可选设置内容如下:



右侧还可以「过滤日志信息」,支持正则,再右面是过滤特定日志的选项。



如果觉得还不够的话,可以点击最右侧的「Edit Filter Configuration」来配置一个自

己的过滤器。



另外,还可以对进行「日志搜索」,鼠标点击Logcat中间区域获得焦点,Ctrl + F 调出 搜索工具栏,接着搜索相关的日志内容。



顺带提下Log类的一个容易忽略的小坑:


Log类只会打印4000个字符,超过部分不打印!!!


2.有脑动态调试法


其实就是用Android Studio提供的Debug模式来程序调试,相比起前面的 Toast打印法和Log日志打印法,稍微复杂一点,要点学习成本,还有动脑子, 最重要是可以动态调试,很多新手玩家貌似对这个都望而却步,其实不难,待我 由浅入深走一遭,来学学Android Studio Debug核心技巧。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
设计模式 算法 前端开发
Android面经分享,失业两个月,五一节前拿到Offer,设计思想与代码质量优化+程序性能优化+开发效率优化
Android面经分享,失业两个月,五一节前拿到Offer,设计思想与代码质量优化+程序性能优化+开发效率优化
|
3月前
|
Shell Linux 开发工具
"开发者的救星:揭秘如何用adb神器征服Android设备,开启高效调试之旅!"
【8月更文挑战第20天】Android Debug Bridge (adb) 是 Android 开发者必备工具,用于实现计算机与 Android 设备间通讯,执行调试及命令操作。adb 提供了丰富的命令行接口,覆盖从基础设备管理到复杂系统操作的需求。本文详细介绍 adb 的安装配置流程,并列举实用命令示例,包括设备连接管理、应用安装调试、文件系统访问等基础功能,以及端口转发、日志查看等高级技巧。此外,还提供了常见问题的故障排除指南,帮助开发者快速解决问题。掌握 adb 将极大提升 Android 开发效率,助力项目顺利推进。
88 0
|
5月前
|
安全 Java Android开发
05. 【Android教程】Android 程序签名打包
05. 【Android教程】Android 程序签名打包
61 1
|
3月前
|
Ubuntu Android开发
安卓系统调试与优化:(一)bootchart 的配置和使用
本文介绍了如何在安卓系统中配置和使用bootchart工具来分析系统启动时间,包括安装工具、设备端启用bootchart、PC端解析数据及分析结果的详细步骤。
191 0
安卓系统调试与优化:(一)bootchart 的配置和使用
|
5月前
|
安全 API Android开发
Android打开USB调试命令
【6月更文挑战第20天】
188 1
|
4月前
|
Oracle Java 关系型数据库
Android studio 安装以及第一个程序
Android studio 安装以及第一个程序
128 0
|
5月前
|
Java Android开发
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
142 0
|
5月前
|
安全 网络协议 网络安全
程序与技术分享:Android应用安全之数据传输安全
程序与技术分享:Android应用安全之数据传输安全
|
6月前
|
存储 定位技术 开发工具
Android 开发前的设计,Android之内存泄漏调试学习与总结
Android 开发前的设计,Android之内存泄漏调试学习与总结
|
6月前
|
XML Java Android开发
如何美化android程序:自定义ListView背景
如何美化android程序:自定义ListView背景
63 2