以下是如何在IDEA中在Dubbo的分布式环境中设置远程调试的步骤:

1、首先,你需要在启动提供者服务时,加入一些JVM参数以开启调试服务。这些参数应该在你的启动脚本或者命令中。以下是一个常见的示例:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

这行命令开启了调试,并设置了远程调试端口为5005。你可以根据你的实际情况选择端口。这里的suspend=n表示在启动时不挂起JVM,你也可以设为y,这样JVM会在启动时挂起,等待你的调试器连接后再开始执行。
2、然后在IDEA中,你需要设置远程调试:
打开"Run" -> "Edit Configurations",点击"+",选择"Remote JVM Debug"。
在打开的配置窗口中,将“Host”和“Port”分别设置为你的提供者服务所在的机器的地址和步骤1中设置的调试端口。
设置完成后,点击"Apply"并"OK"。
最后,当你要进行调试时,选择你刚才创建的调试配置,点击IDEA的"Debug"按钮(一个绿色的虫子图标)。这时IDEA会连接到提供者服务的调试服务。如果一切正常,你就可以在提供者服务的代码中设置断点,然后像平时一样进行调试了。
需要注意的是,如果提供者服务不在你的本地机器上,你需要确保调试端口(如例子中的5005)能够被IDEA访问,这可能需要你配置相关的网络和防火墙设置。

原理介绍:

这个问题可以从两个方面来解释:为什么在Dubbo分布式环境中无法直接打断点,以及远程调试如何使断点调试成为可能。

为什么在Dubbo分布式环境中无法直接打断点
当你在本地IDE环境中设置断点,你是在对IDEA的JVM进程进行调试。这个进程加载了你的代码和相关的库,并执行它们。当代码执行到你设置的断点时,JVM会暂停执行,并让你检查和控制程序的状态。
然而,在Dubbo分布式环境中,你的代码实际上是在另一个JVM进程中执行的,这个进程可能在另一台机器上。虽然这个进程加载了你的代码,但它并没有加载IDEA或其他的调试工具。因此,你的IDEA无法直接对这个进程进行调试,即使你在IDEA中设置了断点,这些断点也不会在远程的JVM进程中生效。这就是为什么你无法在分布式环境中直接打断点的原因。
远程调试如何使断点调试成为可能
远程调试解决了上述问题,使你能够在IDEA中调试运行在远程JVM进程中的代码。这是如何工作的呢?
当你在启动JVM进程时添加了-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005这样的参数,你实际上是开启了JVM的调试服务。这个服务允许外部的调试器(如IDEA)连接到JVM,并通过Java Debug Wire Protocol (JDWP)协议与之通信。JDWP是一种用于调试Java程序的协议,它定义了调试器和JVM之间的消息格式,允许调试器控制JVM的执行,例如设置断点、检查和修改变量的值等。
当你在IDEA中设置了远程调试配置并启动调试时,IDEA会连接到JVM的调试服务,并发送JDWP消息来设置断点。当JVM执行到这些断点时,它会暂停执行,并通过JDWP消息将相关的状态信息发送给IDEA。这样你就可以在IDEA中查看和控制程序的状态,就像在本地调试一样。
也就是说,远程调试实质上是在IDEA(调试器)和远程JVM(被调试的程序)之间建立了一个调试通信链路,使IDEA能够控制和观察远程JVM的执行。这就是为什么远程调试可以使你在IDEA中对运行在Dubbo分布式环境中的代码进行断点调试

Dubbo远程调用在IDEA无法打断点怎么破的更多相关文章

  1. Dubbo远程调用服务框架原理与示例

    Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成. 主要核心部件: Remoting: 网络通信框架 ...

  2. (转)dubbo远程调用细节

    作者: 白文志 (来自开源社区) 服务提供者暴露一个服务的详细过程 上图是服务提供者暴露服务的主过程:首先ServiceConfig类拿到对外提供服务的实际类ref(如:HelloWorldImpl) ...

  3. 转: Dubbo远程调用服务框架原理与示例

    Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和  Spring 框架无缝集成. 主要核心部件: Remoting:  网络通 ...

  4. dubbo 远程调用

    记得服务暴露的时候createServer()里 server = Exchangers.bind(url, requestHandler); requestHandler在DubboProtocol ...

  5. Dubbo远程调用之公司内部提供的服务

    公司内部提供的服务 一家对外提供服务的公司,例如百度,腾讯,阿里,京东,58 同城等,公司内部有多个事业群,事业部门,每个事业部门内部又有若干个子部门,子部门里面有多个不同的小组负责各自的业务.提供对 ...

  6. 架构师之路-在Dubbo中开发REST风格的远程调用

    架构师之路:从无到有搭建中小型互联网公司后台服务架构与运维架构 http://www.roncoo.com/course/view/ae1dbb70496349d3a8899b6c68f7d10b 概 ...

  7. 【Rest】在Dubbo中开发REST风格的远程调用(RESTful Remoting)

    目录 概述 REST的优点 应用场景 快速入门 标准Java REST API:JAX-RS简介 REST服务提供端详解 HTTP POST/GET的实现 Annotation放在接口类还是实现类 J ...

  8. 当当网开源Dubbox,扩展Dubbo服务框架支持REST风格远程调用

    当当网近日开源了Dubbox项目,可为Dubbo服务框架提供多项扩展功能,包括REST风格远程调用.Kryo/FST序列化等等. 当当网架构部和技术委员会架构师沈理向InfoQ中文站介绍了Dubbox ...

  9. 在Dubbo中开发REST风格的远程调用(RESTful Remoting)

    rest 在Dubbo中开发REST风格的远程调用(RESTful Remoting)

  10. alibaba远程调用框架dubbo原理

    alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo.hsf),jms消息服务(napoli.notify),KV数据库(tair)等.这个框架/工具/产 ...

随机推荐

  1. 【LeetCode贪心#12】图解监控二叉树(正宗hard题,涉及贪心分析、二叉树遍历以及状态转移)

    监控二叉树 力扣题目链接(opens new window) 给定一个二叉树,我们在树的节点上安装摄像头. 节点上的每个摄影头都可以监视其父对象.自身及其直接子对象. 计算监控树的所有节点所需的最小摄 ...

  2. VirtualBox下宿主机和Linux虚拟机共享文件配置方法

    VirtualBox版本-5.2.8 Linux版本-Ubuntu16.04 2020.03.31 一.首先在宿主机上新建一个文件夹,这里命名为共享文件夹(如果读者自行命名记得后文全部替换),存放了一 ...

  3. 推荐三款 Mac 上的理财神器 iCompta、Rublik、UctoX

    今天推荐三款理财神器,像个人的话可以使用 iCompta(个人财务管理)一款软件就好了,但有些朋友可能有关注汇率的需求,可以使用 Rublik(汇率动态),还有一些小伙伴可能有自己的公司等原因财务量较 ...

  4. 统计模拟实验—R实现(蒲丰投针)

    统计模拟实验 统计模拟是数理统计.和计算机科学的结合,是一门综合性学科.在科学研究和生产实际的各个领域中,普遍存在着大量数据的分析处理工作.如何应用数理统计中的方法来解决实际问题,以及如何解决在应用中 ...

  5. 1.封装PageHelper实现分页

    前言 这几天想着动手将一些技术融合到项目中,昨天思考了会儿,想起了我与亲戚的对话:我说:"我想将若依项目完整的实现一遍",亲戚给我反馈到"你没必要完整复现若依项目,而且你 ...

  6. jmeter参数化导致反斜杠(\)被转义

    前情提要:在用jmeter做接口测试时,对请求体进行参数化,执行结果报错.但在不参数化的情况下,执行结果成功,而且参数化后,请求中读取到的参数是正确的(执行失败与执行成功时的参数一致). 问题排查:参 ...

  7. 用 Gaussian Process 建模 state-action 空间相关性,加速 Multi-Fidelity RL

    目录 全文快读 1 intro 3 背景 4 method 4.1 model-based 算法:GP-VI-MFRL 4.2 model-free 算法:GPQ-MFRL 5 experiment ...

  8. ShardingJDBC配置

    Sharding-JDBC定位为轻量级Java框架,在Java的JDBC层提供的额外服务. 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容J ...

  9. CVE-2016-3088漏洞复现

    1.背景介绍. ActiveMQ的web控制台分三个应用,admin.api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口:admin和api都 ...

  10. GDB使用简单总结

    简单总结常用gdb调试命令 不长篇讨论gdb是什么,或者怎么使用了,因为网上很多都讲的比较详细,以下只是做个备录,经常使用的命令,偶尔不用容易忘记! 1.set args xxxx  (xxx为参数) ...