IntelliJ IDEA远程调试:使用IDEA Remote Debug进行高效调试的指南

引言

在开发分布式系统时,调试是一个重要但复杂的环节。开发者通常需要跨越多个服务、模块和线程来追踪和解决问题。在没有远程调试的情况下,许多开发者会在代码中添加各种日志语句,然后重新部署和上线来调试。这种方法不仅费时,而且可能引入额外的错误或问题。

有时候,在本地环境中调试时没有发现问题,但当代码被打包并部署到测试环境时,却会出现一堆莫名其妙的问题。这可能是因为不同的环境、配置或服务之间的交互导致了问题的出现。

幸运的是,有一种强大的工具可以帮助解决这些问题,那就是远程调试。通过远程调试,开发者可以在远程服务器上直接对Java应用程序进行调试,就像在本地环境中一样。这样,就可以避免重新部署和上线的耗时过程,并且可以实时查看和修改变量的值、查看堆栈信息等。

本文将介绍如何使用IntelliJ IDEA的远程调试功能来高效调试分布式系统。此外,我们还将探讨一些常见的调试问题和解决方法,帮助你更好地应对分布式系统开发中的挑战。

1、准备工作

1、确保你的IDEA已经安装并配置好,且已安装了Java开发工具包(JDK)。
确保你的Java应用程序已经部署到远程服务器上,并且可以通过远程访问进行调试。

2、启动调试应用

使用特定JVM参数运行服务端代码
要让远程服务器运行的代码支持远程调试,则启动的时候必须加上特定的JVM参数,这些参数是:

-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port}或者-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=127.0.0.1:5555
将address设置为127.0.0.1:5555,表示将调试端口限制为本地访问,远程无法访问, 设置参数应该注意

其中的${debug_port}是用户自定义的,为debug端口,本例以5005端口为例。
如果只是临时调试,在端口号前面不要加上限制访问的IP地址,调试完成之后,将上述JVM参数去除掉之后重新发布下,防范开放远程调试端口可能带来的安全风险。

java  -Dspring.config.location=application-pre.yml  -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n -jar  fubaodai-app-1.0-SNAPSHOT.jar

在这里插入图片描述

3、配置远程调试

  1. 在IDEA中,打开"Run/Debug Configurations"对话框。
  2. 在对话框中,点击"+“按钮,选择"Remote”。
  3. 在弹出的对话框中,填写远程服务器的连接信息,包括服务器IP地址、端口号、调试协议等。
  4. 点击"OK"按钮保存配置。
    在这里插入图片描述
    在这里插入图片描述
    或者 Remote
    在这里插入图片描述

4、本地IDEA启动debug模式

在这里插入图片描述

**要求:**双方代码一致,否则远程调试无法启动;
本地启动刚刚配置的 Remote Server,正常时会看到日志:

Connected to the target VM, address: 'xxx:5005', transport: 'socket'

在这里插入图片描述

5、设置断点,开始调试

本地 IDEA 代码中设置断点
浏览器或手机 HTTP 访问服务器
IDEA 即可在断点暂停并跟踪
在这里插入图片描述

6、远程调试的问题和注意事项

  1. 确保远程服务器的Java版本和IDEA的Java版本一致。
  2. 确保远程服务器的防火墙设置允许IDEA的调试连接通过。
  3. 确保远程服务器上已经安装了所需的调试工具(如jdb)。
  4. 在远程调试时,需要注意保护敏感信息,如密码、密钥等。
  5. 在修改代码时,需要同步远程服务器上的代码,以免出现版本不一致的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/107955.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis——其他数据类型介绍

概要介绍 Redis中有10种不同的数据类型。之前的blog中介绍了Redis中常见的五大数据类型:String,List,Hash,Set,ZSet。而Redis中还有许多其他的数据类型,一般在特定的场景中使用 Stream 首先介绍一下什么…

bootstrap-datepicker实现只能选择每一年的某一个月份

1、问题描述 最近碰到一个需求,要求日期控件选择的时候,只能选择某一年的1月份。 2、解决方法 使用setStartDate()和setEndDate()函数对日期选择框进行范围限制。 3、我的代码 【免费】bootstrap-datepicker实现只能选择每一年的某一个月份资源-CSDN文库…

从零开始的PICO教程(1)Pico游戏开发项目配置

从零开始的PICO教程(1)Pico游戏开发项目配置 文章目录 从零开始的PICO教程(1)Pico游戏开发项目配置一、前言1、大纲 二、成为Pico开发者1、注册 PICO 开发者帐号2、创建组织3、创建应用 三、导入PICO的SDK1、PICO设备开启 “开发者…

睿思BI制作数据分析报告并导出到word中

数据分析报告是一种常用的分析应用文体,它是数据分析项目的目的、方法、过程、结论以及可行性建议等内容的完整展示,是数据背后真实的业务水平的客观体现,是管理者做出科学、严谨决策的依据。睿思BI在数据报表中配置数据分析报告,…

【LeetCode: 1462. 课程表 IV:拓扑排序+图+广度优先搜索】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Mobileye CEO来华:只有能控制住成本的公司,才能活下来

‍作者|德新 编辑|王博 上午9点近一刻,Mobileye CEO Amnon Shuashua步入酒店的会议室。由于Amnon本人是以色列希伯来大学的计算机科学教授,大部分人更习惯称他为「教授」。 时近以色列的新年,这趟教授的中国之行安排十分紧凑。 他率领了一…

统计表和流程分析,也能同屏呈现_三叠云

表单统计&流程分析 路径 表单设计 >> 表单设置 >> 拓展设置 >> 表单统计 功能简介 新增表单统计、流程分析功能(Beta版)。可在当前列表,直接看到表单的统计表和流程分析数据统计图表。 1. 统计表:统计…

密码学概述

密码学的概念 密码,最初的目的是用于对信息加密,计算机领域的密码技术种类繁多。但随着密码学的运用,密码还被用于身份认证、防止否认等功能上。密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变…

大数据Flink(七十四):SQL的滑动窗口(HOP)

文章目录 SQL的滑动窗口(HOP) SQL的滑动窗口(HOP) 滑动窗口定义:滑动窗口也是将元素指定给固定长度的窗口。与滚动窗口功能一样,也有窗口大小的概念。不一样的地方在于,滑动窗口有另一个参数控制窗口计算的频率(滑动窗口滑动的步长)。因此,如果滑动的步长小于窗口大…

关于FastReport中特殊字符中括号[]的处理

在FastReport报表中,TextObject控件,RichObject控件等,会默认使用英文的中括号[]作为特殊字 符,用于表达式的计算。 这样,在程序中如果对 该控件进行赋值(值中带有中括号[]),则程序就会出错。 如果不需要…

互联网医院App开发:构建医疗服务的技术指南

互联网医院App的开发是一个复杂而具有挑战性的任务,但它也是一个充满潜力的领域,可以为患者和医疗专业人员提供更便捷的医疗服务。本文将引导您通过一些常见的技术步骤来构建一个简单的互联网医院App原型,以了解该过程的基本概念。 技术栈选…

YOLO物体检测系列3:YOLOV3详解

🎈🎈🎈YOLO 系列教程 总目录 YOLOV1整体解读 YOLOV2整体解读 YOLOV3提出论文:《Yolov3: An incremental improvement》 1、YOLOV3改进 这张图讲道理真的过分了!!!我不是针对谁,在…