以下是如何在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. SpringBoot 整合 Kafka 与 Avro 【No group.id】 问题解决方法

    [问题描述]:ApplicationContextException: Failed to start bean 'org.springframework.kafka.config.internalK ...

  2. 一个基于GPT模型实现的Git Commit信息自动生成工具

    每次提交代码的时候,你是否有为如何写Commit Message而迟迟按不下提交的时刻呢?然后,死磨硬泡写了一些并提交后,又被review的小伙伴吐槽了呢?相信很多小伙伴有过这样的经历吧? 趁着最近C ...

  3. 【超详细】Ubuntu 20.04 安装 Apache+PHP网页环境 图文教程,常见问题和解决方案

    本文将介绍在Ubuntu20.04 LTS环境下安装Apache的全过程,针对其中可能出现的一些坑也会提供解决方案. 作者:Eriktse 简介:19岁,211计算机在读,现役ACM银牌选手力争以通俗 ...

  4. 股票数据定向爬虫.py(亲测有效)

    import requests from bs4 import BeautifulSoup import traceback import re def getHTMLText(url,code='u ...

  5. 使用Docusaurus搭建个人网站

    第一次使用 Docusaurus 搭建我的个人网站 第一步 安装 node 环境 安装 Node.js 16.14 或更高版本(可以通过执行 node -v 命令来查看当前所用的 Node.js 版本 ...

  6. 微前端框架single-spa子应用加载解析

    作者:京东物流 宁冲 1 前言 什么是微前端? 微前端是指存在于浏览器中的微服务. 本文主要通过对微前端框架single-spa的基座应用加载子应用的single-spa-vue函数库进行分析,通过代 ...

  7. 有关idea的使用部分

    出现相关异常,提示类似粗在idea找不到相关的包加载失败. 执行mvn命令 mvn -U idea:idea 含义更新重新加载idea工程的相关jar

  8. [网络/SSH]OpenSSH: sshd / sftp-server / ssh-agent | ssh / scp / sftp | OpenSSL

    1 OpenSSH OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现. OpenSSH是使用SSH透过计算机网络加密通讯的实现. SSH协议族可以用来进行远程控制, 或在计 ...

  9. linux防火墙开放1521端口

    问题描述:使用plsql连接数据库发现TNS报错,登录服务器发现防火墙开放,如果直接关闭防火墙,所有的端口都可以连接,但是实际中可能会遇到开启防火墙的库,这时候需要开放单一端口对某一服务器或者某一网段 ...

  10. ASTAR机台(win7 p'rofessional)使用python tool中文显示异常问题解决

    1.双击"computer"打开界面如下,再单击"open control panel"打开控制面板. 2.在控制面板中点击"Clock,Langua ...