IDEA调试技巧

article/2025/10/15 0:01:54

Debug技巧

在我们的编程生涯中,调试代码是免不了的,而如何调试代码就显得尤为重要了,其中利用 IDE 自带的调试工具,是我们快速定位问题的重要手段之一。在此,我们就一起来了解一下 IntelliJ IDEA 自带的调试工具,熟悉常用的Debug技巧。

  • 标注 1:Show Execution Point ,显示执行端点(Alt + F10);
  • 标注 2:Step Over,跳到下一步(F8);
  • 标注 3:Step Into,进入代码或者说进入到方法内部(F7);
  • 标注 4:Force Step Into,强制进入代码或者说进入到方法内部(Alt + Shift + F7);
  • 标注 5:Step Out,跳到下一个断点或者跳出方法(Shift + F8);
  • 标注 6:Drop Frame,放弃当前 debug,重新执行 debug;
  • 标注 7:Run to Cursor,运行到光标处(Alt + F9);
  • 标注 8:Evaluate Expression,评估表达式;
  • 标注 9:View Breakpoints,查看断点,展示更多高级设置;
  • 标注 10:Mute Breakpoints,置灰所有断点,再次点击,恢复;
  • 标注 11:Get thread dunp ,获得当前的线程堆栈。

如上述所示,都是一些常用的功能。其中,点击 标注 9 所示的View Breakpoints按钮,如下图所示:

  • 标注 1:View Breakpoints,查看断点,展示更多高级设置;
  • 标注 2:Java Line Breakpoints,展示项目中设置的所有断点;
  • 标注 3:Conditions,设置条件断点;
  • 标注 4:Remove once hit,设置击中一次断点后,取消该断点;
  • 标注 5:Pass count ,设置当循环若干次后,进入断点,常用于循环语句。

在上述的标注中,通过 标注 3 我们可以很方便的设置条件断点;通过 标注 4 我们可以设置一次性断点,不用我们每次手动的设置和取消断点;通过 标注 5 我们可以设置更加高级的断点击中条件。特别地,在Debug模式下,我们也可以双击鼠标右键,唤出常用的工具菜单,其效果如下图红框标记所示,提供了评估表达式、进入光标位置、强制进入光标位置和添加Watches等快捷按钮:

当我们点击Evaluate Expression按钮之后,会弹出如下界面:

  • 标注 1:Condition expression,待评估的表达式; 
  • 标注 2:Evaluate,评估按钮,点击后进行评估。

此外,在评估表达式的时候,我们并不一定非得输入代码中的现有的表达式,可以按实际需要,自定义表达式,而且 IntelliJ IDEA 提供了代码提示功能,很方便。熟练的使用上述功能,可以有效的提高我们的调试效率,祝大家好运!

远程调试Tomcat

在调试代码的过程中,为了更好的定位及解决问题,有时候需要我们使用远程调试的方法。下面就让我们一起来看看,如何利用 IntelliJ IDEA 进行远程 Tomcat 的调试。

首先,配置remote:

如上图所示,点击Edit Configurations,进入如下界面:

如上图所示,我们进入了Run/Debug Configurations界面,然后点击左上角的+,选择Remote:

  • 标注 1:运行远程 JVM 的命令行参数;
  • 标注 2:传输方式,默认为Socket;
  • 标注 3:调试模式,默认为Attach;
  • 标注 4:服务器 IP 地址,默认为localhost,需要修改为目标服务器的真实 IP 地址;
  • 标注 5:服务器端口号,默认为5005,需要修改为目标服务器的真实端口号;
  • 标注 6:搜索资源是使用的环境变量,默认为<whole project>,即整个项目。

如上图所示,其中 标注 2 和 标注 3 又分别有两种分类,对于 标注 2,

标注 2:传输方式,默认为Socket;

  • Socket:macOS 及 Linux 系统使用此种传输方式;
  • Shared memory: Windows 系统使用此种传输方式。

标注 3:调试模式,默认为Attach;

  • Attach:此种模式下,调试服务端(被调试远程运行的机器)启动一个端口等待我们(调试客户端)去连接;
  • Listen: 此种模式下,是我们(调试客户端)去监听一个端口,当调试服务端准备好了,就会进行连接。

然后,复制 标注 1,即 IntelliJ IDEA 自动生产的命令行参数,然后导入到 Tomcat 的配置文件中。以 Linux 系统为例,导入语句为:

export JAVA_OPTS='-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8001'

如果是 Windows 系统,则导入语句为:

set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8001

两者的区别在于导入语句的关键字不同以及有无引号,Linux 系统的导入关键字为export,Windows 为set;Linux 的导入值需要用单引号''括起来,而 Windows 则不用。

接下来,修改 Tomcat 的 bin 目录下的catalina.sh文件(如果是 Windows 系统则修改catalina.bat文件),将上述的导入语句添加到此文件中即可:

至此,IntelliJ IDEA 远程调试 Tomcat 的配置已经完成了,调试的后续步骤按正常的调试技巧进行就可以啦!

我们假设服务器的 IP 地址为10.11.12.39,端口号为16203,设置完成后,进入Debug模式,如果连接成功,则会出现如下提示:

此外,如果我们是跨多个系统进行调试,则只需要在想要调试的系统中配置Remote,打上断点,启动Debug模式,然后在服务开始的地方执行程序即可进入到我们设置的断点。而且,如果我们在本地配置Remote并关联到某个 Tomcat,在Debug模式下,所有涉及到断点所在代码的功能,都会进入我们设置的断点。

例如,对于服务器上的 Tomcat A,多个系统都用到了这个 Tomcat,如订单子系统、账户子系统、路由子系统等,并且多个系统间互相调用,如订单子系统调了账户子系统,账户子系统又调了路由子系统,则当我们在这三个子系统中配置Remote并在对应的代码(如在订单子系统中查询商户的账户信息,则调到账户子系统;在账户子系统中又通过路由子系统调到其他底层服务查询商户的账户余额等)上打上断点,启动Debug模式之后,通过单元测试或者页面操作触发订单子系统中的查询商户的账户信息功能,则会依次进入到在上述三个子系统中设置的断点。

此外,在我们配置完远程调试之后,就算别人启动相关服务,也会进入到我们的断点,而且会受到我们设置的断点的影响,只有在我们执行完测试之后,服务才会继续执行下去。最后,远程调试的功能真的很强大,善用远程调试,远离 Bug!

参考链接:https://github.com/guobinhit/intellij-idea-tutorial/blob/master/articles/basic-course/debug-skills.md


http://chatgpt.dhexx.cn/article/n0grYcJa.shtml

相关文章

Idea 调试自定义 AbstractProcessor 程序

我们常使用的 Lombok 可以自动生成 gettr 和 setter 方法,使用起来非常方便;有时候我们也要去实现自己的注解处理器,实现一些在编译阶段需要执行的逻辑,例如我之前写的 spring cloud 自动生成 openfeign 的Fallback 降级方法;自动生成 openfeign 的Fallback 但是自定义注…

idea调试jdk源码

前言&#xff1a; 最近想看看HashMap的实现过程&#xff0c;本来了解到private notes可以对源码添加注释&#xff0c;但最后没有获取到插件&#xff0c;该问题没有解决&#xff0c;于是就想直接对源码包进行调试以及修改。 一、解压源码包 在jdk的安装路径内找到src.zip复制一…

intellij idea调试之jar包调试

之前写过一篇文章《记一次“java: 程序包org.aspectj.lang不存在”问题解决》。但是有次我碰到用那种方法也解决不了的场景。想来想去只能直接跑jar包来运行程序了。但是还需要用idea来调试程序&#xff0c;这个时候就需要做一些关联配置。通过网上搜索得到方案&#xff0c;整个…

使用IDEA调试debug小技巧

直接定位目标位置 调试想具体定位到目标断点处时做法有&#xff1a; 不断的按F8&#xff0c;直至定位到目标位置在目标定位处打个断点然后按F9&#xff0c;跳到具体目标位置直接点击目标位置前面的小数字&#xff08;推荐使用&#xff09; 例如下图&#xff0c;想从断点1处直接…

idea调试vue项目

前言 之前尝试的各种前端编辑器H5Builder,SublimeText,VSCode,NotePad等等&#xff1b;作为一名后端开发&#xff0c;自己是从Eclipse系列的IDE转向使用JetBrain系列&#xff0c;深受InteliJ IDEA的毒害 近期公司的项目使用VSCode开发。然而作为大集成的IDEA&#xff0c;更能…

IDEA 调试技巧

简介 在工作中看到很多水平不错的程序员&#xff0c;在调试代码的时候&#xff0c;也还只是停留在单步 debug 的阶段。如果能掌握更多的代码调试技巧&#xff0c;那么将大大提升工作效率。下面就让我么一起来系统的学习下 IDEA 的调试技巧吧。 debug界面介绍 默认设置下&…

# Idea 调试 Debug 技巧

Idea 调试 Debug 技巧 IDEA 为我们提供了很多简单且非常强大的调试功能 在需要调试的行打上断点&#xff0c;debugger 方式启动Idea 控制台如下 调试功能说明 Show Execution Point 快捷键&#xff1a;Alt F10回到当前激活的断点处&#xff1a;当你的鼠标不在断点所处的…

idea 调试

1、这里以一个web工程为例&#xff0c;点击图中按钮开始运行web工程。 2、设置断点 3、使用postman发送http请求 4、请求发送之后会自动跳到断点处&#xff0c;并且在断点之前会有数据结果显示 5、按F8 在 Debug 模式下&#xff0c;进入下一步&#xff0c;如果当前行断点是一个…

debug idea js,IDEA调试javaScript

谈起JavaScript调试&#xff0c;大家可能想到的就是FireFox下的FireBug&#xff0c;这毫无疑问&#xff0c;FireBug基本已经成为JavaScript开发人员的必备工具。在本文中&#xff0c;将向大家介绍如何在IDEA下远程调试JavaScript&#xff0c;毕竟能在IDE工具中直接设置断点&…

IDEA调试

IDEA调试 1 调试界面各按钮的含义2 调试过程中修改变量的值3 快速定位bug4 实战 IDEA是Java常用的开发工具&#xff0c;这里记录一下IDEA调试相关操作。 1 调试界面各按钮的含义 2 调试过程中修改变量的值 3 快速定位bug 4 实战 可以通过下面的代码实际操作操作&#xff0c;以…

IDEA如何进行debug调试

&#x1f334;IDEA如何进行debug调试 &#x1f343;第一步&#xff0c;设断点&#xff0c;打开debug&#x1f343;第二步&#xff0c;使用Debug调试的功能键 程序调试&#xff0c;相信是所有程序员必经之路&#xff0c;因为程序写出来是不可能没有错误的&#xff0c;当然除了非…

IDEA调试技巧(图文详解,保姆教程)

文章目录 基础篇&#xff1a;一、行断点二、详细断点&#xff08;源断点&#xff09;三、方法断点四、异常断点五、字段断点 进阶篇一、条件表达式二、通过调试来打印堆栈信息三、可以通过调试来解析表达式四、避免操作资源drop frames五、常用按键功能介绍六、调试源码七、str…

Intellij IDEA 调试功

本文简单介绍 IDEA 编辑器的调试功能,主要包括断点调试、单点调试、高级调试。可以收藏本文章,使用到的时候方便查找。 1.设置断点 选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可。 2.开启调试会话 点击红色箭头指向的小虫子,开始进入调试。 IDE下方出现 Deb…

在Intellij IDEA中使用Debug

Debug用来追踪代码的运行流程&#xff0c;通常在程序运行过程中出现异常&#xff0c;启用Debug模式可以分析定位异常发生的位置&#xff0c;以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。 所以学习下如何在Intellij IDE…

IDEA的debug调试技巧详解

目录 一、概述 二、debug操作分析 1、打断点 2、运行debug模式 3、重新执行debug 4、让程序执行到下一次断点后暂停 5、让断点处的代码再加一行代码 6、停止debug程序 7、显示所有断点 8、添加断点运行的条件 9、屏蔽所有断点 10、把光标移到当前程序运行位置 11、…

app分享到微信的方案

来源分析 商业分析在微信的使用人数已经高居各通讯APP的榜首的同时&#xff0c;微信成为了我国移动流量最大的平台之一。在次趋势的引导下&#xff0c;很多的商家、体户便抓住了这一机遇&#xff0c;利用微信这个渠道来做产品的推广、以及营销方案宣传。但是好景不长&#xff…

java版微信分享功能(支持分享给好友/分享到朋友圈)

点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] 先上官方文档&#xff1a;http://mp.weixin.qq.com/wiki/home/index.html 做之前建议先过遍文档&#xff0c;文档都说的清晰明了。 如果已经看过文档&#xff0c;那我们一起整理下JSSDK的流程步骤&#xff1a; 绑定域名 …

Android中实现微信分享的功能

在android开发中微信分享功能还是经常用到的&#xff0c;比如把文字&#xff0c;图片&#xff0c;网页类型&#xff0c;小程序类型的文件等分享给微信好友&#xff0c;朋友圈等。官方文档 那么接下来就来说说如何去实现吧 一.添加依赖 implementation com.tencent.mm.opensdk:…

H5链接分享到微信

在开发中最长遇到的一个需求就是微信分享&#xff0c;那么怎么实现呢&#xff0c;我使用uni-app写的 首先需要一个引导分享的图片 <view v-show"yd" class"boxContent" click"getclose(text)"><image class"yd" src"/s…

微信小程序学习 onShareAppMessage转发分享

最近在做仿抽奖助手小程序&#xff0c;遇上分享的一个问题。抽奖助手分享出来的商品缩略图很清晰且格式更好&#xff0c;而我们分享出来的是页面的默认截图&#xff0c;感觉不好看。其实它这个地方用的是图片&#xff0c;增加一个imageUrl即可。 onShareAppMessage(options) 在…