推荐一款IDEA高级调试插件Earth Run Helper

JetBrains Marketplace: https://plugins.jetbrains.com/plugin/27968-earth-run-helper

一、开放版 VS 专业版

功能\版本 开放版 专业版
可同时挂载数量 1(端口号:1030) 5(端口号:1030+)
Default Run Method 支持 支持
类加载器选项 支持 支持
对象类型结果树结构展示 支持 支持
值类型结果展示 支持 支持
agent\method耗时统计 支持 支持
Debug Ultra 快速启动入口 不支持 支持
New Tab Run Method|Add Tab 不支持 支持
调试脚本保存、编辑、删除 不支持 支持
前置脚本 不支持 支持
后置脚本 不支持 支持
执行脚本预览 不支持 支持
已加载资源展示 不支持 支持
JVM中类反编译 不支持 支持

二、如何获取专业版

专业版通过微信付费方式获取,只收取一次费用。可通过bilibili(代码不周到)微信公众号(代码不周到)留言付费后入群。

三、建议与声明

建议:如果你只是把它用作执行过程中的一个入口,开放版本已满足你日常使用,建议无需选择付费版本,付费版本内容更符合有特殊需求的人群。

声明:专业版功能在迭代过程中,功能可能会存在下放,如果介意勿入。专业版更像是你对我插件的认可,你将享有的是最新的功能体验及其他插件相关资源,所以群名为:Earth系列插件专属群。

四、插件功能说明

插件主要功能是建立在服务启动的前提下,无法使用请先检查服务是否启动

4.1 快速接入JVM进程的三种方式

  1. 支持使用Debug Ultra 启动,默认开启Debug,在Debug Ultra工具栏中会显示调试窗口
    image

  2. 启动服务后,在目标方法上右键:Default Run Method、New Tab Run Method
    image

  3. 点击未连接,如果当前IDEA只启动了一个服务,不显示弹窗,否则,如下图所示
    image

4.2 结果展示的两种形式

  1. 默认值结果显示
    image

  2. 对象树结果展示,默认只显示根节点,单击后显示子节点。(绿色为最终值无子节点,点击后下方区域可展示结果)
    image

4.3 类加载器的选择

默认会选择AppClassLoader,通常情况下并不需要调整。在特殊场景下,需要基于实际选择对应的类加载器。如在使用spring-boot-devtools需优先选择RestartClassLoader,否则会存在部分注入类为null的情况。
image

4.4 右键菜单:Default Run Method| New Tab Run Method

默认菜单只是提供快速调试时所需代码,在绝大多数情况下是正确的,在少数情况下还是需要进行调整。编辑区支持JavaGroovy两种语法,所以即便你的项目是Java项目,依然可以使用Groovy语法的特性去编写你测试的代码。如:def u = new User(name:"zhou",age:34)
image


注意:从以下部分开始,仅为专业版才有的功能。

4.5 执行内容的增删改查

image

  • 保存测试内容:保存后会复制成为一个新Tab,此时在新Tab中的任何更改都会同步保存
  • 修改测试内容:双击左侧列表编辑区会展开此Tab,任何更改均会在关闭保存
  • 删除测试内容:选中删除项,点击“-”图标即可删除

注意:默认展示内容不能删除、更改,对默认展示内容的修改,不会被保存。除默认配置外,保存内容只在当前项目下生效。

4.6 前置\后置脚本设置

前置、后置脚本执行最终执行逻辑为:前置 + 当前、当前 + 后置,插件提供预览按钮用来查看完整的执行代码。生效范围决定着配置脚本在不同IDE窗口是否展示,原则上配置名称不能重复,但是由于不同项目中配置隔离,如果出现两个项目中均存在同一配置名称,其中一项目将此升级为全局配置,在另外一个项目中将会显示两个同名配置。

前置脚本使用场景示例:HTTP接口测试时,需要上下文信息,此时可在前置脚本设置

import org.springframework.mock.web.MockHttpServletRequest
import org.springframework.web.context.request.RequestContextHolder
import org.springframework.web.context.request.ServletRequestAttributes
import org.springframework.web.servlet.mvc.condition.RequestConditionHolder

def request = new MockHttpServletRequest()
request.addHeader("name","earth run helper")

def attributes = new ServletRequestAttributes(request)
RequestContextHolder.setRequestAttributes(attributes)

image

4.7 已加载类资源展示

资源夹中展示为当前启动项目下,所有类加载器加载的类信息列表,可通过搜索查找目标类信息
image

4.8 JVM中类反编译

选中查看的类,即可查看反编译后的类信息
image

五、常见问题

5.1 为什么服务启动后无法挂载到当前项目

  • 插件使用条件为64位JDK,版本1.8及以上
  • 公开版只支持挂载一个服务且端口号为1030,请检查端口号是否被占用

5.2 存在上下文的方法如何测试

参考:4.6 前置\后置脚本设置 中的 前置脚本使用场景示例

5.3 那些项目可以使用此插件

插件定位为JVM进程调试工具,对于任何对agent无限制的服务均可使用。无论使用的Spring、Dubbo、中间件服务,只要是Java进程在理论上均能挂载使用

5.4 JRebel一起使用

插件主要功能是采用Java Agent方式实现的,使用JRebel启动会存在字节码变更,一起使用会出现无法预测的问题,极端情况下,可能当前服务会停止。

原文连接: Earth Run Helper

posted @ 2025-08-05 16:01  Journey&Flower  阅读(221)  评论(0)    收藏  举报