这个时候我们可以点击 Logcat 窗口上的【设置】按钮,设置一条 Log 需要显示哪些关键信息,可设置的项有:时间、线程ID、包名、Tag name。我们可以根据自己的需要控制显示,并且下面还会有一条 Sample Log 提供设置后的预览效果,就像下图中这样。
日常开发的时候我们还会遇到另一种情况,比如根据当前 UI 的渲染情况,我们需要时刻打印 UI 的某个值,来帮助我们观察 UI,同时当到达某种条件的时候,输入一条我们得到的【结果 log】。也就是说在获得我们的【结果 log】之前会有很多没用但是又必须打印的 log,这样当我们需要查找【结果 log】的时候就会非常麻烦。
就像上图中这样,我们的【结果 log】被上下【循环打印 log】包围了,很难一下子找出来,这时候我们可以选关键字【右键】,选择【Fold Lines Like This】,如下图所示。
这样我们相同关键字的 log 就会被折叠,当然也可以展开查看详细 log。
2. 自定义断点执行条件
我们来看上面这段代码,通过字面意思我们可以得知:这是一个点击事件执行的方法,点击发生后通过 NavController 从当前 HomeFragment 跳转到 EmailFragment。然后我们在第一行打了一个断点,我们已经得知当 email 的 subject 包含 【Bonjour】关键字的时候,这段代码会发生崩溃,反之不包含则不会发生崩溃,所以我们不需要每次断点都生效。
这里我们可以右键断点,在 Condition 里输入我们的条件判断语句,当条件允许的时候,断点才生效。条件语句的代码支持 Kotlin 和 Java 两种语言的写法,如下图所示。
然后如果我们想在跳转到 EmailFragment 之后进一步去追踪问题,于是我在 EmailFragment 的 onCreate 方法打了一个断点(如下图所示),然后这里还会遇到我们之前说的问题:不符合条件的时候断点也会生效,这时候我们该怎么办呢?
我们可以在这个断点上面,右键、点击更多。
左边选择当前断点之后,在右边点击【Disable until breakpoint hit】,选择我们之前有条件判断的断点,那么这个新的断点会在它所跟随的断点生效之后才会生效。
3. 挂起线程
当我们右键任意一个断点的时候,会有一个 Suspend 选项【All、Thread】,All 也就意味着当我们在一个多线程的应用中 debug 问题的时候,一旦这个断点生效,所有的线程都会被挂起,Thread 表示只挂起当前线程。所以当我们在某个后台线程中 debug 问题的时候就可以选择 Thread,这样就不会在 debug 的时候阻塞主线程的正常功能。
还有一个打开关闭断点的快捷键也分享一下:Windows 用户 Alt + Click ,Mac Option + Click 。
4. 动态打印
详细很多人包括我之前在 debug 的时候,都会在需要 debug 的地方增加 print 输出一下信息供自己排查错误,这里提供一种快捷方便的方法,可以既不污染我们的代码,又可以随时输出任意信息。
如上图所示,在需要打印的地方增加断点,然后取消所有线程的挂起,选择【Evaluate and log】,属于我们需要打印的语句,当代码执行到断点的时候,不会暂停,而会根据我们设置的打印信息输出 log,是不是很方便?
5. 断点分组
通常遇到一个问题的时候,我们需要增加很多断点去追踪问题的原因,当问题解决之后,往往会忘记取消这些断点,导致在某次调试的时候,设备会被之前的断点所暂停,会让我们很无语。这里我们可以 debug 的时候在某个断点上:右键、更多,然后选择这个问题所有相关的断点,将它们分到同一个 Group 里面,那么这一个组的断点就可以统一开关、统一删除。
6. 断点上一步
说到这个真的很痛心,常常因为自己在 debug 的时候,由于下一步点击的太快了而错过了问题关键行,只能重新运行一次代码,重新 debug 然后自己一次次点击下一步。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
写在最后
在技术领域内,没有任何一门课程可以让你学完后一劳永逸,再好的课程也只能是“师傅领进门,修行靠个人”。“学无止境”这句话,在任何技术领域,都不只是良好的习惯,更是程序员和工程师们不被时代淘汰、获得更好机会和发展的必要前提。
如果你觉得自己学习效率低,缺乏正确的指导,可以加入资源丰富,学习氛围浓厚的技术圈一起学习交流吧!
加入我们吧!群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。
35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。
但从长远来说,眼光,格局,长远发展的方向才是最重要的。
35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。