作为一个Android开发者,我们大部分时间可能都在调试代码,下面分享几种在Android Studio上的调试小技巧,帮助我们快速修复问题。
在Logcat中有很多日志,如果我们想快速查找某些日志,可以通过使用Logcat中的过滤功能,在Android Studio上可以通过以下方式进行配置。
可以通过TAG,日志内容、包名、PID和日志等级等方式进行过滤。
除了设置过滤器选择我们需要的日志外,我们还可以单独剔除某些类型的日志,当某些日志出现频率比较高,但是又不是我们需要的日志时,可以通过以下配置来过滤。
这样Logcat中就会过滤所有包含我们选中内容的日志。
当我们设置断点时,可能不小心手抖,设置错了一行,我们不需要先取消错误的断点,再重新设置断点,只需要直接拖动断点即可。
为断点设置条件表达式,当条件满足时断点才生效,我们可以在断点上点击右键进行设置
也可以在断点管理界面设置
如上设置后,只有在viewType这个变量值为0的时候这个断点才能生效,这样就能减少很多不需要的断点,提高效率。需要注意的是只要在断点处可以访问的变量都可以在条件表达式使用,非常的灵活。
我们还可以为断点设置前置断点,也就是说只有前置断点命中了,当前断点才生效。
有些时候我们想在某处添加日志,查看某些变量的值,但是又正在调试,断开调试重新启动又比较麻烦,当然我们也可以在调试器的变量表中查看,但是如果断点处调用比较频繁,看起来就比较麻烦了,这个时候我们就可以使用Evaluate and log功能并且设置不在断点处暂停(取消勾选Suspend),这样就能在运行到该断点时在Debug控制台打印出我们配置的表达式结果。
打印结果如下,需要注意的是打印结果是在Debug的控制台而不是Logcat中。
上面还有两个Log选项,一个是打印断点命中的日志(Breakpoint hit message)和调用到断点处时的堆栈信息(Stack trace)。
另外我们可以通过按住Shift键再点击代码行数右边,这样就能快速配置断点。
在调试器中,除了查看变量表以外,我们还可以通过Evaluate Expression功能查看表达式的结果,并且将它添加到变量表中方便观察。
调试利器之Drop Frame
在我们调试的时候,有时不小心多执行了一步,想要回到上一步就只能重新跑一遍,现在只要你调试的设备系统版本是Android 10或者以上,就可以通过点击Debugger工具栏的Drop Frame菜单回到上一步。
当我们收到线上或者其他来源的堆栈日志信息后,看起来没有平时写代码时那么方便,我们可以把日志信息复制到Analyze Stack Trace工具中,这样就和平时写代码是看起来一样了,而且可轻松定位到源码位置,通过菜单栏Code->Stack Trace or Thread Dump打开。