工欲善其事,必先利其器!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界面及操作
[图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如探囊取物!相关推荐
- 挑战UnityShader学习之三_工欲善其事必先利其器Standard面板详细解析和代码自定义
Standard Shader面板原来的样子 之前第一第二章,分别分享了,最普通,进阶Phonn光的PBR(都不是PBR)模板,本来第三章想分享Unity官方的PBR:结果碰到Unity的作死模式,又 ...
- 高效开发:IntelliJ IDEA天天用,这些Debug技巧你都知道?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:aneasystone https://www.aneasy ...
- 【CS-Notes】工欲善其事必先利其器(Code、Git、Docker、Linux)
文章目录 Code工作台(工欲善其事必先利其器) 1.通用工具 1.1.编辑器 1.2.Git 基本版本控制 1.3.Docker容器 2.Linux工作台 2.1.Linux命令 2.2.开发工具 ...
- 最全的Pycharm debug技巧
最全的Pycharm debug技巧: 工欲善其事,必先利其器.无论你的 IDE 是 IntelliJ IDEA.Pycharm.WebStorm.GoLang.还是PhpStorm ,调试器都是标配 ...
- ensp路由器无法启动_品胜云路由器Breed刷入详细教程,技巧和注意事项,功能大增...
前面发文,介绍过品胜净音云路由器WFR101N功能,硬件配置参数,高清拆解图.主要硬件参数:闪存型号是W25Q128FVSG,容量大小是16M:内存是华邦的W9751G6KB-25,DDR2 SDRA ...
- 工欲善其事必先利其器,IDEA必装插件!
工欲善其事必先利其器,IDEA必装插件! 代码缩略图 CodeGlance 推荐指数:★★★★★ 用过sublime Text的都知道它第一印象就是编辑器最右边有一个缩略图,可以很好的对代码进行导航 ...
- 360路由器v2刷第三方固件_品胜云路由器Breed刷入详细教程,技巧和注意事项,功能大增...
前面发文,介绍过品胜净音云路由器WFR101N功能,硬件配置参数,高清拆解图.主要硬件参数:闪存型号是W25Q128FVSG,容量大小是16M:内存是华邦的W9751G6KB-25,DDR2 SDRA ...
- 工欲善其事必先利其器 之 DockerDesktop(下)
工欲善其事必先利其器 之 DockerDesktop(下) 文章目录 工欲善其事必先利其器 之 DockerDesktop(下) 前言 一.DockerDesktop Settings 二.什么是 W ...
- JVM - 工欲善其事必先利其器之虚拟机工具(下)
文章目录 JVM - 工欲善其事必先利其器之虚拟机工具(下) 1.可视化虚拟机工具JConsole 1.1 JConsole是什么? 1.2 JConsole的使用 1.2.1 概览 1.2.2 内存 ...
- 工欲善其事必先利其器 之 Minikube(上)
关键词:minikube.快速搭建kubernetes.快速搭建k8s.如何在桌面上运行一个k8s 工欲善其事必先利其器 之 Minikube (上) 文章目录 工欲善其事必先利其器 之 Miniku ...
最新文章
- Winsock编程原理——面向连接
- sql server 交叉表查询实例-成绩统计
- Nvidia 安装相关文件下载地址
- 【Mybatis】sqlSessionTemplate.getConnection() 遇到 java.sql.SQLException: Connection is closed
- 马踏棋盘算法(骑士周游)
- php fpm core,在php-fpm下,服务器间歇出现core dump 追踪到php代码是include一个php文件...
- OpenFeign 的 9 个坑,每个都能让你的系统奔溃
- tongweb设置gzip
- 服务器wifi模块通讯协议,WiFi模块 TCP/IP协议栈
- 投射电子显微镜(TEM)
- 倍福ADS通讯(三)——ADS通讯协议包格式
- Python打开记事本
- 家庭智能终端开发之蓝牙语言遥控器概念篇
- 在c++中关于堆和堆栈的区别
- 使用MathType为公式自动编号
- RFID中的s50卡
- 位运算——强大得令人害怕
- 45个有用的JavaScript技巧,窍门和最佳实践
- 输入自变量范围matlab,matlab已知约束条件求自变量范围
- vue el-input绑定enter按键