小技巧 | 在 Android Studio 调试应用
#1. Android Studio官方Team debug心得
中文:zhuanlan.zhihu.com/p/219935679
# 2. 重点介绍
- 设置 断点 条件:设置条件语句才可以进入该断点
- 非阻塞 断点:代码执行到该断点会自动执行下去,取消勾选Suspend(默认勾选表示阻塞断点),黄色断点代表非阻塞断点,常与Condition和Evaluate and log选项搭配,应用案例调试动画和ui
- Evaluate and log (评估与记录): 勾选Evaluate and log选项可以在输入栏填入代码,当执行到该 断点 会执行填入的语句
- 依赖 断点 :一段代码会被不同的路径触发,这种情况在应用开发中并不少见。如果您发现了只会在某个特定路径才会触发的 Bug,随意为其打一个断点会造成许多无意义的运行中断。为了应对这种情况,您可以使用依赖断点。
# 3. 常用断点
可以修改某个请求的 json数据
Evaluate and log 常用语句 用于打印该 断点 所在函数栈信息
Log.d("TAG",Log.getStackTraceString(new Throwable()));
# 4. adb idea插件分享
Adb start app with debugger 能快速调试启动相关代码(至少比你手速attach快,比Debug app选项节省编译时间)
该插件还能快速删除权限,取消本地存储并冷启动 方便测试与首次启动相关功能
# 5. debug 不仅仅能 debug
- debug动态阅读系统 源码
一个debug动态阅读(含跨进程调试)activity启动的例子:juejin.cn/post/684490…
注意build gradle 设置的compile version 要和 官方模拟器版本一致 否则断点行数无法对应上,一定要用官方模拟器或者google官方出的手机也行,因为其他厂商手机改过系统代码
- debug改变代码习惯,通过修改关键变量值节省编译时间,减少测试代码带到线上
没有关键变量,只能通过写死代码再编译执行A或者B,再回复代码需要编译运行3次,假设一次编译2min就浪费了6min,同时还很有可能忘记把写死条件的测试改回来带到线上造成重大问题
如果有debug的思维后,写代码会提出关键变量,通过debug断点时修改变量值,能cover所有条件还能节省编译时间,并且无需测试代码(虽然有黄线 -。-)
通过debug修改关键变量值,能大大节省编译时间,提高工作效率
# 6. 最后
欢迎大家补充常用断点或者debug技巧