debug的一些个人心得

debug是高级程序员的必备技能。一手快速、精准的定位到BUG位置的debug技术能帮助你快速树立大佬的形象。现分享下个人的一些debug心得
一、熟悉快捷键
这个最简单的了,一般也就进入方法F6,跳到下一行F5,跳过到下一断点F8,按钮的按法有一定的经验技巧,在最可能出现BUG的地方可以一行行跳,检查过敏感代码后,忽略非敏感代码,跳到下一断点等。

二: 练习debug源代码
抓住程序运行的主要生命周期
推荐多去学习下如下三个过程的执行顺序

  1. spring容器初化过程,基本都在下面这个方法内:org.springframework.context.support.AbstractApplicationContext#refresh,关注的点有配置加载,各类工厂前置和前置处理器,监听器,bean的前置和后置处理,Aware接口、createBean等。

  2. tomcat+springMVC处理请求,过滤器,拦截器,参数处理器,切面,MethodHandle,异常通知,返回消息处理器,后置切面,拦截器,过滤器等。

  3. mybatis四大对象的调用顺序和拦截器执行的时间,跟着sqlSession里面四大对象的调用顺序走即可。

在关注的节点方法上打上断点。反复的跟,跟上几十上百次,在debug这类源代码达到熟练后,再去debug业务代码,简直不要太简单。而且在处理一些源码BUG时也会很快速。

三、抓主干
无论是读源码也好,读业务代码也好,断点一定要打在程序运行的必经之路上的主要方法上。这些主要方法有执行入口、主实现方法、异常的构造方法等。以一个简的找空指针为例,在事先不知道的情况下,直接将断点打在NullPointException的构造方法上,栈的上一行就是空指针爆出来的位置。

四、变量表
时刻关注变量表对象属性值的变化情况。前一个栈和后一个栈同一个对象的值有没有发生变量,是否符合预期,是否是空、入参情况、返回值情况等。这对于查找BUG有很重要的意义。

五、断点的打法
个人使用的方法有:
经验断点法:凭经验将断点打在可能出问题的代码断
异常构造方法断点:出哪个类型的异常就在那个类型的异常的构造方法上打断点。因为new异常的点往往距离 BUG最近。
二分查找BUG法。先圈定两断大点的代码范围,看出BUG在哪一断。再逐步缩小断点范围。
锚点法:打日志锚点,用于查找一些线上的,无法直接DEBUG的情况。

六、心态
找BUG不要盲猜,不要急,多跑几遍,多看看变量表的变化。不要一开始就求助于百度或同事。那对自已找BUG的技术没一点提高。碰到源码BUG不认识不要慌,也尝试去读下源码,DEBUG技能的提高需要慢慢累积。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值