前言
整理并积累Android开发过程中用到的一些调试技巧,通过技巧性的调试技能,辅助增强代码的健壮性、安全性、正确性
案例一:抛出明显异常
- 常见的:除数为0问题
class MainActivty : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
val i = 1/0
}
}
}
会提示错误原因,并告知在哪一行
- 一般错误
class MainActivty : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
val s = "Candy" //假设此处是在一个方法内,我们无法看到
var i = 0
i = s.toInt()
}
}
}
会提示错误原因,并告知在哪一行
错误原因可能不认识,直接找错误关键字,检索百度
案例二:逻辑问题
- println()方式调试
class MainActivty : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
var res = 0
for (i in 1 until 10){
res=+i //该处将逻辑故意写错 应为 +=
println("i=${i},res=${res}")
}
val s:String = StringTo(res)
Toast.makeText(this,s,Toat.LENGTH.SHORT).show()
}
}
private fun StringTo(res:String){
println("将Int转换成String")
resturn res.roString()
}
}
会掺杂其他方法日志
- log方式调试
class MainActivty : AppCompatActivity(){
val TAG = "MainActivity"
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
var res = 0
for (i in 1 until 10){
res=+i //该处将逻辑故意写错 应为 +=
Log.d(TAG,"i=${i},res=${res}")
}
val s:String = StringTo(res)
Toast.makeText(this,s,Toat.LENGTH.SHORT).show()
}
}
private fun StringTo(res:String){
println("将Int转换成String")
resturn res.roString()
}
}
筛选条件多:Debug、Info、Worn、Error以及自定义筛选等
可以直接根据key筛选
调试数据较多时,不方便查看,不够灵活
- debug模式调试
- resume progrem: 继续执行
- step over: 跳入下一行
- step into: 进入自定义方法,非方法则下一行
- force step into:进入所有方法,非方法则下一行
- step out: 跳出方法,且方法执行完成
- run to cursor: 跳入逻辑的下一个标记点
debug运行时,会出现提示框,无需操作
案例三:代码丢失||项目问题
- history
- 不小心删除代码/文件且已save并退出 右击项目 -> Local History -> Show History -> 选择某一历史右键 -> Revert
作者:Coward881
链接:https://juejin.cn/post/7114926062982660103
网友评论