debug技巧之本地调试
大家好啊,我是summo,今天给大家分享一下我平时是怎么调试代码的,不是权威也不是教学,就是简单分享一下,如果大家还有更好的调试方式也可以多多交流哦。
如果看过我文章的同学应该知道我是一个Java开发,平时都是Spring全家桶。后端和前端虽说都是写代码,但调代码的时候还是有点不同的,前端可以console.log一把梭,但是Java只用 System.out.println是不行的,原因也很简单,“前端热部署快,后端慢”,后端总是避不开断点调试的,如果还有没学会断点调试的同学,建议还是学习一下。
好了,废话不多说,开始正文~
本地调试的方式主要看使用的IDE,我平时都是用的IDEA社区版,感觉比MyEclipse和Eclipse比较好用一些。
一、debug模式启动应用

这个还是很简单的,我相信只要不是手抖都不会点错。但是有时候我们会发现平时很快就启动好的应用,突然变得特别慢,好几分钟都启动不好。一般出现这种情况的原因有可能是
你将断点打在了方法上,这个IDEA官方也有说明,如下。

Note that using method breakpoints can slow down the application you are debugging.
使用方法断点会使得正在debug调试的程序变慢。
解决办法有两个
a. 找到方法上断点取消掉
b. 如果断点不好找,直接找到IDEA的BreakPoints全部取消就好了

二、调试功能

- Resume Program(继续程序):当程序处于暂停状态时,点击这个按钮会使得程序继续执行,直到下一个断点或者程序结束。
- Step over(单步跳过):这个按钮允许你执行当前行的代码,但是不会进入当前行调用的任何方法内部。如果当前行调用了一个方法,那么这个方法的执行会“跳过”,直接执行到这个方法的返回处。
- Step into(单步进入):与 Step over 不同,Step into 会进入当前行调用的方法内部。如果当前行是一个方法调用,那么程序会暂停在这个方法的第一条可执行行。
- Force Step into(强制单步进入):这个按钮允许你强制进入一个方法,即使该方法的源代码不可用(例如,它可能是一个第三方库的一部分)。通常,当尝试使用 Step into 进入一个没有源代码的方法时,IDEA 会忽略这个步骤。但是,使用 Force Step into 可以强制程序进入方法,即使没有源代码。
- Step out(单步返回):当处于一个方法内部时,点击这个按钮会使得程序执行完当前方法的剩余部分,并在方法返回时暂停。这允许你快速退出当前的方法,返回到调用它的代码中。
这些调试功能对于理解程序的执行流程和调试程序中的错误非常有帮助。自己可以多试试。
三、 Evaluate Expression
这个功能是我用的最多的,非常好用,强烈推荐!!!
1. 它在哪?
进入debug后,代码区右键打开菜单

2. 它长啥样?
上面是输入框,下面是输出

3. 它有什么作用?
- 查看变量值
- 修改变量值
- 执行方法
- 查看复杂数据结构
- 调试信息输出
- ... ...
不仅上面这些,它甚至可以写一段新的代码执行,我演示几个吧,不然没感觉。
(1)查看变量值


(2)执行方法


(3)新的代码块

四、小结一下
调试Java程序,用IDEA社区版挺方便的。设置断点的时候别太随意,否则启动程序会慢得跟蜗牛似的。用好单步调试,能帮你一步步看清楚程序是怎么跑的。还有那个表达式评估,简直就是调试时的万能钥匙,啥都能干。最后,记得多学多练,调试这门手艺,越磨越亮。
debug技巧之本地调试的更多相关文章
- 《Debug Hacks》和调试技巧【转】
转自:https://blog.csdn.net/sdulibh/article/details/46462529 Debug Hacks 作者为吉冈弘隆.大和一洋.大岩尚宏.安部东洋.吉田俊辅,有中 ...
- gdb调试的艺术——Debug技巧
调试的艺术——Debug技巧总结 (本文从写好的wiki里粘出来的,格式稍乱不影响阅读) 用Q+编号代表问题,A+编号代表答案.用这种方式组织.如无特别说明,这些技巧都是针对Visual Studio ...
- Linux Kernel - Debug Guide (Linux内核调试指南 )
http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级 ...
- 解放双手:如何在本地调试远程服务器上的Node代码
写在前面 谈到node断点调试,目前主要有三种方式,通过node内置调试工具.通过IDE(如vscode).通过node-inspector,三者本质上差不多.本文着重点在于介绍 如何在本地通过nod ...
- Hive 本地调试方法
关键词:hive, debug 本地调试(local debug) Hive 可分为 exec (hive-exec,主要对应源码里的ql目录) 和 metastore 两部分,其中exec对外有两种 ...
- spring boot本地调试服务器部署项目
项目本地测试然后发布到服务器上,各种BUG层出不穷.那么下面配置下,然后在本地调试部署在服务器上的程序吧 一.首先idea打开你的项目,服务器上传打包的程序.然后如下命令启动(linux),绿色参数为 ...
- 新手也能学会本地调试微信,natapp 官网映射
本地调试微信的新手指引~ 照着配置,一定可以配置成功,实现本地调试微信,公司好几个同事按照我写的步骤,都独立配成功了. 1.首选在natapp注册一个账号,申请免费隧道或者购买隧道,我买了一个月9元的 ...
- JAVA基础之——使用idea创建maven项目 以及使用tomcat本地调试springmvc
前言:关于这个话题网上有很多,本文旨在引导实战纠偏,理论偏少,如果按照步骤还不能达到本文目的,请留言. 1 环境准备 1.1 软件准备 idea:官方下载社区版,下载后安装 maven:Apache- ...
- hadoop本地调试方法
Mapreduce 是Hadoop上一个进行分布式数据运算和统计的框架,但是每次运行程序的时候都需要将程序打包并上传的集群环境中运行,这就会让程序的调试变得十分不方便.所以在这里写下这篇博客和大家交流 ...
- win7 x64和win10 x64 windbg 本地调试记录
今天看CSDN和某文档看了win7 64位 和win10 64位 的windbg本地调试内核的办法 win7 x64 Step1:kdbgctrl –db Step2:kdbgctrl –e Step ...
随机推荐
- CF-937(D,E)
CF-937 在补题-- D 分析 我们发现这些因子都是二进制形式的十进制数,n的范围是$1e5$,16的二进制是$10000$,于是可以枚举1~16,把这些因子预处理出来,对于每个n就枚举因子再作除 ...
- #分治,Kruskal#洛谷 3206 [HNOI2010]城市建设
题目 动态改边权求最小生成树 \(n\leq 2*10^4,m\leq 5*10^4,q\leq 5*10^4\) 分析 乍一看是线段树分治,但有一个很大的问题就是局部的Kruskal不一定是最后的选 ...
- CSP2019-S2总结
目录 前言 洛谷 5657 格雷码 代码(找规律) 洛谷 5658 括号树 分析 代码 洛谷 5659 树上的数 洛谷 5664 Emiya 家今天的饭 洛谷 5665 划分 分析 代码 洛谷 566 ...
- 前端常用库 CDN
jQuery 链接: v1.9.1:https://i.mazey.net/lib/jquery/1.9.1/jquery.min.js v2.1.1:https://i.mazey.net/lib/ ...
- 响应式系统reactive system初探
目录 初识响应式系统 什么是响应式系统 响应式系统的四大特点 及时响应性(Responsive) 恢复性(Resilient) 有弹性(Elastic) 消息驱动(Message Driven) 总结 ...
- Docker 学习路线 3:安装设置 Docker Desktop 与 Docker 引擎指南
Docker提供了一个名为Docker Desktop的桌面应用程序,简化了安装和设置过程.还有另一个选项可以使用Docker引擎进行安装. Docker Desktop网站 Docker引擎 Doc ...
- 记录C++,base64解码写PDF文件遇到的坑
不得不bb一下, 场景:用户传base64数据,我生成PDF文件保存到指定路径下 背景:在前人写好的工程上增加这个功能,工程中有base64的.h, .cpp 文件,我试了base64编码没有问题,所 ...
- Django Admin:自动选择当前用户
--转载自:林肯李 该文章写的很好,特转载留待后期备用 背景 在开发 CMS 时,经常需要标记谁创建了记录.Django 为我们提供了一个很好的管理界面.但是当我们只使用默认值时,用户需要自己选择他们 ...
- 【郑州轻工业大学】HarmonyOS宠物健康系统的开发分享
原文:https://mp.weixin.qq.com/s/upcS6PcMS7UBR5jgoP7eow,点击链接查看更多技术内容. 本期我们给大家带来的是家庭宠物健康监测系统开发者杨光的分享,希望能 ...
- 草之王qsnctfwp
文件内容(举例): 林间小路旁有一条小溪 草之王许下三个诺言 无人知晓神诏背后的真相 草之王许下三个诺言 === 林间小路旁有一条小溪 草之王许下三个诺言 林间小路旁有一条小溪 无人知晓神诏背后的真相 ...