工欲善其事,必先利其器!idea最详细的Debug技巧及方法,让你定位bug如探囊取物!

  【微信公众号:二哈Java带你飞】:力求用通俗易懂、诙谐有趣的方式与大家分享知识,让大家在学到东西的同时体验到编码的乐趣╰(°▽°)╯

文章目录

  • 前言
  • debug详细操作----活用手中的神兵利器
    • 1.debug界面及操作
    • 2.debug技巧
  • 总结


前言


   "噼里啪啦!"小哈疯狂地敲着代码,为了能够准点下班,也是拼了把狗命。一顿操作猛如虎,一看bug不忍睹。好不容易写完了代码,满怀期待地按下运行键,结果弹出了一连串的bug错误。“又来到令人紧张而熟悉的bug捉迷藏环节”小哈象征性的打了几个断点,熟练的敲下debug键,左手端着热乎的铁观音,右手单指操作F8,一路自信走到底,结果发现走半天走了个寂寞。
  正巧老汪路过,小哈连忙上前请教如何才能迅速找到bug并予以解决。老汪说:“要想让bug无所遁形,首先要到控制台日志里定位bug的位置,在bug上方附近打上断点,通过debug观察变量里的数据变化,分析是传参错误还是语句不规范,找到问题根源bug自然迎刃而解。”“我明白啦,可是我不知道有什么手段能对bug实现精准打击,我吃鸡的时候就被队友吐槽夕阳红枪法,总是抓不到点上。理论我是知道的差不多了,但总觉得少了点什么东西。”小哈耸拉着脑袋说道。
  “你缺少一套系统的debug方法,正好我前段时间收藏了一篇非常详细的有关debug的文章,看在你这么勤奋好学的份上,就分享给你看看吧。但记得要点赞收藏关注三连。不做白嫖党,这是技术汪的传统美德哈!”“好的,不等下次,这次一定!谢谢前辈,汪!”


debug详细操作----活用手中的神兵利器

1.debug界面及操作


工欲善其事,必先利其器!idea最详细的Debug技巧及方法,让你定位bug如探囊取物!_第1张图片

[图1.1] 通过红圈Debug按钮打开面板


图1.2
[图1.2]

【以下操作的顺序均按图1.2从左到右的顺序】
1.Alt + F10:跳转到当前代码执行的行
2.F8:步过,不会进入方法
3.F7:步入,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法
4.Alt + Shift + F7:强制步入,能进入任何方法,包括官方类库的方法(可用于查看底层源码)
5.Shift + F8:步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。
6.Drop Frame (无快捷键):回退最初断点(debug过程中想回退的时候可用,不需要前端再次发送请求,很实用
7.Alt + F9:代码直接运行至光标行,而不需要打断点(避免打过多无意义的断点,比如跳过循环的时候可用,很实用
8.Alt + F8:计算对象里的数值,可把光标放在对象上快速计算当前信息



图1.3

[图1.3]

【以下操作的顺序均按图1.3从上到下的顺序】
1.Rerun xxx:重启服务
2.Toggle auto-test:切换自动测试
3.F9:恢复运行,如果后面有断点就跳到该断点上,没断点就运行完整个流程
4.Pause Program:暂停程序,启用Debug
5.Ctrl + F2:关闭服务
6.Ctrl + Shift + F8:查看所有断点(可查看哪里打了断点,双击可直接跳到该断点行的位置,很实用
7.Mute Breakpoints:使所有断点置灰失效,再次点击恢复(debug环境中断点多的时候不走断点跑完流程,很实用


工欲善其事,必先利其器!idea最详细的Debug技巧及方法,让你定位bug如探囊取物!_第2张图片

[图1.4]

1.Alt + F7:查看当前对象在哪被调用
2.Add to Watches:将对象添加到Debugger面板上用于观察数据变化
tips:如果要在直接弹框显示对象,有三种常用方式:
1)Alt+鼠标左键点击变量(很实用)
2)鼠标停留在变量上1秒
3)鼠标选中变量按Alt+F8 打开Evaluate面板


2.debug技巧

图2.1

[图2.1]Debugger:变量记录;Console:日志记录

1.【错误定位】通过Console日志定位bug的位置,在附近加上断点
 tips:可以在一些关键位置加上log.info()日志信息,便于快速排查错误

2.【变量线索】通过debug观察变量数值的变化,判断是否传参出现了问题(数据类型不对),变量类型是否与数据库字段设置的类型一致(如果没有要做一下转换)等

3.【语法线索】如果传参没问题,检查是否问题出在了java语法上,比如一些语句逻辑不对、获取对象不当(操作了个空对象)、数组越界异常等

4.【SQL线索】如果Debugger上没什么问题,再把目光转移到console控制台上的sql语句(注意在检测sql语句时建议用控制台日志记录的sql,因为直接用mapper里边写好的sql有时候是检测不到问题的,我们要从实际场景进行分析),可以将sql语句单独拿出来拼接传的参数进行检测(比如可以放到navicat上运行一下),通过运行sql得到的反馈来判断问题出现的位置。



总结


  写代码出现bug是难以避免的,在开发过程中改bug占据了我们大量的时间。要快速捕捉并解决bug,这需要熟悉idea为我们提供的环境以及日志信息。工欲善其事,必先利其器。掌握了debug的操作和技巧,才能助我们更快的解决开发中遇到的问题。

tips:后续会不断更新,点赞、收藏、关注三连,感谢您的支持!
关注公众号,和小哈一起快乐学习,快乐成长

【关注微信公众号,快来和小哈一起快乐学习,快乐成长】

你可能感兴趣的:(Java,java,debug)