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

文章目录

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

前言

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


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

1.debug界面及操作

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

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

[图1.4]

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

2.debug技巧

[图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:后续会不断更新,点赞、收藏、关注三连,感谢您的支持!

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

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

  1. 挑战UnityShader学习之三_工欲善其事必先利其器Standard面板详细解析和代码自定义

    Standard Shader面板原来的样子 之前第一第二章,分别分享了,最普通,进阶Phonn光的PBR(都不是PBR)模板,本来第三章想分享Unity官方的PBR:结果碰到Unity的作死模式,又 ...

  2. 高效开发:IntelliJ IDEA天天用,这些Debug技巧你都知道?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:aneasystone https://www.aneasy ...

  3. 【CS-Notes】工欲善其事必先利其器(Code、Git、Docker、Linux)

    文章目录 Code工作台(工欲善其事必先利其器) 1.通用工具 1.1.编辑器 1.2.Git 基本版本控制 1.3.Docker容器 2.Linux工作台 2.1.Linux命令 2.2.开发工具 ...

  4. 最全的Pycharm debug技巧

    最全的Pycharm debug技巧: 工欲善其事,必先利其器.无论你的 IDE 是 IntelliJ IDEA.Pycharm.WebStorm.GoLang.还是PhpStorm ,调试器都是标配 ...

  5. ensp路由器无法启动_品胜云路由器Breed刷入详细教程,技巧和注意事项,功能大增...

    前面发文,介绍过品胜净音云路由器WFR101N功能,硬件配置参数,高清拆解图.主要硬件参数:闪存型号是W25Q128FVSG,容量大小是16M:内存是华邦的W9751G6KB-25,DDR2 SDRA ...

  6. 工欲善其事必先利其器,IDEA必装插件!

    工欲善其事必先利其器,IDEA必装插件! 代码缩略图 CodeGlance 推荐指数:★★★★★ 用过sublime Text的都知道它第一印象就是编辑器最右边有一个缩略图,可以很好的对代码进行导航 ...

  7. 360路由器v2刷第三方固件_品胜云路由器Breed刷入详细教程,技巧和注意事项,功能大增...

    前面发文,介绍过品胜净音云路由器WFR101N功能,硬件配置参数,高清拆解图.主要硬件参数:闪存型号是W25Q128FVSG,容量大小是16M:内存是华邦的W9751G6KB-25,DDR2 SDRA ...

  8. 工欲善其事必先利其器 之 DockerDesktop(下)

    工欲善其事必先利其器 之 DockerDesktop(下) 文章目录 工欲善其事必先利其器 之 DockerDesktop(下) 前言 一.DockerDesktop Settings 二.什么是 W ...

  9. JVM - 工欲善其事必先利其器之虚拟机工具(下)

    文章目录 JVM - 工欲善其事必先利其器之虚拟机工具(下) 1.可视化虚拟机工具JConsole 1.1 JConsole是什么? 1.2 JConsole的使用 1.2.1 概览 1.2.2 内存 ...

  10. 工欲善其事必先利其器 之 Minikube(上)

    关键词:minikube.快速搭建kubernetes.快速搭建k8s.如何在桌面上运行一个k8s 工欲善其事必先利其器 之 Minikube (上) 文章目录 工欲善其事必先利其器 之 Miniku ...

最新文章

  1. Winsock编程原理——面向连接
  2. sql server 交叉表查询实例-成绩统计
  3. Nvidia 安装相关文件下载地址
  4. 【Mybatis】sqlSessionTemplate.getConnection() 遇到 java.sql.SQLException: Connection is closed
  5. 马踏棋盘算法(骑士周游)
  6. php fpm core,在php-fpm下,服务器间歇出现core dump 追踪到php代码是include一个php文件...
  7. OpenFeign 的 9 个坑,每个都能让你的系统奔溃
  8. tongweb设置gzip
  9. 服务器wifi模块通讯协议,WiFi模块 TCP/IP协议栈
  10. 投射电子显微镜(TEM)
  11. 倍福ADS通讯(三)——ADS通讯协议包格式
  12. Python打开记事本
  13. 家庭智能终端开发之蓝牙语言遥控器概念篇
  14. 在c++中关于堆和堆栈的区别
  15. 使用MathType为公式自动编号
  16. RFID中的s50卡
  17. 位运算——强大得令人害怕
  18. 45个有用的JavaScript技巧,窍门和最佳实践
  19. 输入自变量范围matlab,matlab已知约束条件求自变量范围
  20. vue el-input绑定enter按键

热门文章

  1. react 输入框 回车事件切换
  2. 什么是WIFI 探针?WIFI 探针的用途有哪些?
  3. c语言猜拳游戏教案,幼儿园中班游戏《猜拳游戏》的教案
  4. 家庭影院投影仪哪款值得买?2022年双11家庭影院4K投影仪首选当贝X3 Pro
  5. 使用EndNote对Word论文的参考文献进行管理
  6. linux查看已安装的软件
  7. Kattis Doors
  8. CSP-M2 B - HRZ 学英语
  9. 中国象棋中的跳马问题(BFS)
  10. 跟着实训团初学HTML的第一天