Android Studio Debug 的 9 个小技巧

【Android Studio Debug 的 9 个小技巧】作者:wanbo

Android Studio Debug 的 9 个小技巧

文章插图
 
周末看 Android Dev Summit '19 的视频的时候 , 看到一章关于 Android Studio Debug 的介绍 , 有很多日常非常有用的小技巧 , 学习了这些小技巧能很大程度的降低我们 Debug 的成本 , 快速定位问题的本质 , 今天就向大家介绍一下 Android Studio Debug 的 9 个小技巧 。
没关注的小伙伴记得关注 , 如果觉得这些文章有点意思 , 记得分享转发评论点赞!
1. Log 过滤和折叠有时候 Logcat 中 log 的信息很长 , 同时还有些我们不需要的信息也打印出来 , 例如下图中的【时间+线程 ID】 。
Android Studio Debug 的 9 个小技巧

文章插图
 
这个时候我们可以点击 Logcat 窗口上的【设置】按钮 , 设置一条 Log 需要显示哪些关键信息 , 可设置的项有:时间、线程ID、包名、Tag name 。我们可以根据自己的需要控制显示 , 并且下面还会有一条 Sample Log 提供设置后的预览效果 , 就像下图中这样 。
Android Studio Debug 的 9 个小技巧

文章插图
 
日常开发的时候我们还会遇到另一种情况 , 比如根据当前 UI 的渲染情况 , 我们需要时刻打印 UI 的某个值 , 来帮助我们观察 UI , 同时当到达某种条件的时候 , 输入一条我们得到的【结果 log】 。也就是说在获得我们的【结果 log】之前会有很多没用但是又必须打印的 log , 这样当我们需要查找【结果 log】的时候就会非常麻烦 。
Android Studio Debug 的 9 个小技巧

文章插图
 
就像上图中这样 , 我们的【结果 log】被上下【循环打印 log】包围了 , 很难一下子找出来 , 这时候我们可以选关键字【右键】 , 选择【Fold Lines Like This】 , 如下图所示 。
Android Studio Debug 的 9 个小技巧

文章插图
 
这样我们相同关键字的 log 就会被折叠 , 当然也可以展开查看详细 log 。
Android Studio Debug 的 9 个小技巧

文章插图
 
2. 自定义断点执行条件
Android Studio Debug 的 9 个小技巧

文章插图
 
我们来看上面这段代码 , 通过字面意思我们可以得知:这是一个点击事件执行的方法 , 点击发生后通过 NavController 从当前 HomeFragment 跳转到 EmailFragment 。然后我们在第一行打了一个断点 , 我们已经得知当 email 的 subject 包含 【Bonjour】关键字的时候 , 这段代码会发生崩溃 , 反之不包含则不会发生崩溃 , 所以我们不需要每次断点都生效 。
这里我们可以右键断点 , 在 Condition 里输入我们的条件判断语句 , 当条件允许的时候 , 断点才生效 。条件语句的代码支持 Kotlin 和 JAVA 两种语言的写法 , 如下图所示 。
Android Studio Debug 的 9 个小技巧

文章插图
 
然后如果我们想在跳转到 EmailFragment 之后进一步去追踪问题 , 于是我在 EmailFragment 的 onCreate 方法打了一个断点(如下图所示) , 然后这里还会遇到我们之前说的问题:不符合条件的时候断点也会生效 , 这时候我们该怎么办呢?
Android Studio Debug 的 9 个小技巧

文章插图
 
我们可以在这个断点上面 , 右键、点击更多 。
Android Studio Debug 的 9 个小技巧

文章插图
 
左边选择当前断点之后 , 在右边点击【Disable until breakpoint hit】 , 选择我们之前有条件判断的断点 , 那么这个新的断点会在它所跟随的断点生效之后才会生效 。
Android Studio Debug 的 9 个小技巧

文章插图
 
3. 挂起线程
Android Studio Debug 的 9 个小技巧

文章插图
 
当我们右键任意一个断点的时候 , 会有一个 Suspend 选项【All、Thread】 , All 也就意味着当我们在一个多线程的应用中 debug 问题的时候 , 一旦这个断点生效 , 所有的线程都会被挂起 , Thread 表示只挂起当前线程 。所以当我们在某个后台线程中 debug 问题的时候就可以选择 Thread , 这样就不会在 debug 的时候阻塞主线程的正常功能 。


推荐阅读