当前位置: 首页 > news >正文

使用 IntelliJ IDEA 进行远程调试

1. 前言

今天线上出现了个 Bug ,而且比较坑的是涉及到k8s环境相关的东西不能线下调试。传统方式是在代码中各种的日志 log 埋点然后重新部署进行调试,再根据 log 中的信息进行分析。如果你的 log 埋点不合理,就要不停的修改代码、不停的打包部署。有没有什么骚操作避免上面的问题呢?

2. 远程调试

当然有解决方案,这就是远程调试(Remote debugging)。远程调试使开发人员能够直接诊断服务器或其它线上进程上的问题,它提供了跟踪线上运行时错误并确定性能瓶颈和问题根源的方法,让你能够像在本地调试一样 Debug 远程服务器。接下来我们将使用流行的 Java IDE,由 JetBrains 出品的 IntelliJ IDEA 来进行远程调试。要让远程服务器运行的代码支持远程调试,则启动的时候必须加上特定的 JVM 参数,这些参数是:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

参数说明:

主要是为了启用Java Debug Wire Protocol (JDWP),这是一种调试协议,使得你可以在程序运行时进行远程调试。具体来说,这些参数的作用如下:

  • -agentlib:jdwp:启用JDWP调试功能,允许远程调试。

  • transport=dt_socket:指定调试通信的传输方式为基于TCP/IP的套接字(socket)。

  • server=y:表示JVM作为调试服务器启动,等待调试客户端(如IDE)连接。

  • suspend=n:指定程序启动时是否暂停。n表示程序不会在启动时暂停,而是直接运行,等待调试客户端连接。如果设置为y,则JVM会在启动时暂停,直到调试客户端连接上来。

  • address=5005:指定调试客户端连接的端口,这里是5005端口。调试客户端会通过这个端口连接到JVM实例。

3. 使用 IDEA 进行远程调试

IntelliJ IDEA 进行远程调试并不复杂经过下面几个步骤就可以很方便的配置。

按照上面图的位置打开配置面板新建一个 Remote 调试面板如下:

按照上图所示的顺序结合你自己服务器和本地环境依次进行配置,然后点击确定就行了。

开启远程调试

点击箭头所示的 绿色甲虫按钮 (快捷键 Shift + F9) 就启动调试了,然后设置好本地代码的断点,让远程的逻辑触发断点逻辑就可以进行打断点调试了。

请务必保证本地 debug 的代码与远程部署的代码完全一致,不能发生任何的修改!否则断点将无法命中!

4. 一些要点

除了需要保证代码一致外,这里还有一些需要我们注意的地方。调试完毕远程的 JDWP Agent 应该被禁用,也就是将远端的相关参数去掉。另外在调试中远端的日志并不会映射到本地,当然你可以借助一些工具将远程的日志映射到本地以提供更强大的调试功能。

还要记住,虽然远程调试是一个非常强大的工具,但是它并非银弹!生产环境不是调试的合适目标,请勿滥用!

相关文章:

使用 IntelliJ IDEA 进行远程调试

1. 前言 今天线上出现了个 Bug ,而且比较坑的是涉及到k8s环境相关的东西不能线下调试。传统方式是在代码中各种的日志 log 埋点然后重新部署进行调试,再根据 log 中的信息进行分析。如果你的 log 埋点不合理,就要不停的修改代码、不停的打包…...

Linux操作系统--进程状态

目录 1.运行、阻塞、挂起 1.1运行 1.2阻塞 1.3挂起(了解一下即可,基本不会出现这种情况) 2.进程状态 2.1进程状态查看 2.2 Z-僵尸进程 2.3孤儿进程 1.运行、阻塞、挂起 1.1运行 运行状态: 进程正在占用CPU执行指令。此时进程对系统资源&#xff…...

【端到端】端到端自动驾驶依赖Occupancy进行运动规划?还是可以具有生成局部地图来规划?

端到端自动驾驶系统的架构设计,目前主流做法实际上已经出现两种路径,我们来拆解一下: 🚘 一、Occupancy 是否用于运动规划? 一种趋势是使用 Occupancy 表示作为 中间表征,用于: 运动规划&…...

HarmonyOS-ArkUIV2装饰器-@Param:组件外部输入

上文我们了解了@Local装饰器 ,讲明了Local装饰器不允许外部传入值对其进行初始化。详见: HarmonyOS-ArkUI V2装饰器@Local装饰器:组件内部状态-CSDN博客。 但总有场景是需要外部组件传值过来,然后本组件接收这个值这种场景的。而且很多情况下,一个状态变量的作用范围会是…...

报错 ImportError: cannot import name ‘packaging‘ from ‘pkg_resources‘

解决方法一 (推荐) 先检查setuptools是否为70.0.0版本 pip list | grep setuptools再降低版本 python -m pip install setuptools69.5.1或者: 解决方法二 上述的报错信息表明:在安装 mmcv 时出现了 pkg_resources 模块的问题…...

Ollama调用多GPU实现负载均衡

文章目录 📊 背景说明🛠️ 修改 systemd 服务配置1. 配置文件路径2. 编辑服务文件2. 重新加载配置并重启服务3. 验证配置是否成功 📈 应用效果示例1. 调用单个70b模型2. 调用多个模型(70b和32b模型) 总结📌…...

Next.js 简介

Next.js 是一个由 Vercel 开发的基于 React 的 Web 开发框架,旨在简化 React 应用的开发流程,提供更好的性能和开发体验。 🌟 Next.js 的核心特点 1. 文件系统路由(File-system Routing) 在 pages/ 目录中创建文件就…...

使用Apache POI(Java)创建docx文档和表格

1、引入poi 依赖组件 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>4.0.0</version> </dependency> <dependency><groupId>org.apache.poi</groupId>&…...

Dynamics365 ExportPdfTemplateExportWordTemplate两个Action调用的body构造

这两天在用ExportPdfTemplate做pdf导出功能时&#xff0c;遇到了如下问题InnerException : Microsoft.OData.ODataException: An unexpected StartArray node was found when reading from the JSON reader. A PrimitiveValue node was expected. 我的场景是使用power automate…...

《算法笔记》3.3小节——入门模拟->图形输出

1036 跟奥巴马一起编程 #include <iostream> #include <cmath> using namespace std;int main() {int n,m;char c;cin>>n>>c;for (int i 0; i < n; i) {cout<<c;}cout<<endl;m round(1.0*n/2)-2;//round里面不能直接写n/2&#xff0c;…...

iOS 上的内存管理是如何处理的?

iOS主要通过自动引用计数&#xff08;ARC&#xff09;和内存管理模型来处理内存。以下是对这两者的详细介绍以及在实际工作中的应用场景&#xff1a; 1. 自动引用计数&#xff08;ARC&#xff09; ARC是iOS和macOS中的内存管理机制。它能自动跟踪和管理应用程序的内存使用情况…...

河北工程大学e2e平台,python

题目&#xff0c;选择题包100分&#xff01; 题目&#xff0c;选择题包100分&#xff01; 题目&#xff0c;选择题包100分&#xff01; 联系&#x1f6f0;&#xff1a;18039589633...

【Qt】spdlog日志模块的使用

版本 spdlog版本&#xff1a;1.5.0 采用1.5.0版本主要基于以下考虑&#xff1a;兼容Qt5.9.X版本和兼容C11。 spdlog 1.5.0下载地址&#xff1a;https://github.com/gabime/spdlog/releases/tag/v1.5.0 摘要 在Qt应用程序开发中&#xff0c;良好的日志系统至关重要。本文将介…...

python相关面试题

python相关面试题 1.上下文管理器需要实现哪两种方法以及相关应用 2.对比一下进程&#xff0c;线程和协程 3.魔法函数有哪些 4.什么是闭包和装饰器&#xff0c;装饰器缺点是什么 5.什么是浅拷贝和深拷贝 6.什么是GIL锁和互斥锁 7.init和new有什么区别&#xff0c;new方法的返回…...

swift菜鸟教程11-12(数组与字典)

一个朴实无华的目录 今日学习内容&#xff1a;1.Swift 数组1.1创建数组1.2访问数组1.3修改数组使用 append() 方法或者赋值运算符 在数组末尾添加元素通过索引修改数组元素的值&#xff1a; 1.4遍历数组 使用for-in循环同时需要每个数据项的值和索引值 1.5合并数组1.6count 属…...

.NET WPF 控件类分层结构

.NET WPF 控件类分层结构 在 WPF 中&#xff0c;类的层级结构设计是为了实现线程安全、依赖属性、可视化渲染、布局和交互等功能。以下是 WPF 核心基类的逐级说明&#xff0c;从最底层到最顶层&#xff1a; 1 DispatcherObject 作用&#xff1a; 提供与 WPF 线程模型&#xf…...

基于ImGui+FFmpeg实现播放器

基于ImGuiFFmpeg实现播放器 演示&#xff1a; ImGui播放器 继续研究FFmpeg&#xff0c;之前做了一个SDL的播放器&#xff0c;发现SDL的可视化UI界面的功能稍微差了点&#xff0c;所以今天我们换了一个新的工具&#xff0c;也就是ImGui。 ImGui官方文档&#xff1a;https://g…...

【Docker】快速部署 Certbot 并为 Nginx 服务器配置 SSL/TLS 证书

【Docker】快速部署 Certbot 并为 Nginx 服务器配置 SSL/TLS 证书 引言 Certbot 是一个免费的开源工具&#xff0c;用于自动化管理和获取 SSL/TLS 证书&#xff0c;主要用于与 Let’s Encrypt 证书颁发机构交互。 步骤 Nginx 挂载 certbot 文件夹。 docker run -d \--name…...

MATLAB编写的机械臂控制仿真程序,它主要实现了对一个二连杆机械臂的运动控制仿真,比较了PID控制和非线性模型预测控制两种方法在机械臂轨迹跟踪任务中的性能

clc; clear; close all;%% 机械臂参数 l1 0.5; l2 0.4; Ts 0.02; sim_time 60; t 0:Ts:sim_time;%% 物理参数 m1 1.0; m2 0.8; g 9.81;%% 直线轨迹参数 start_point [0.3; 0.1]; end_point [0.7; 0.3]; progress t/sim_time; xd start_point(1) (end_point(1) - s…...

python办公自动化------word文件的操作

一、 word文件的创建 需要安装包&#xff1a;python-docx 例1&#xff1a;创建word文件 from docx import Document# 创建doc对象 doc Document()# 指定路径下创建一个docx文件 doc.save(./dataFile/test1_doc.docx) 运行结果&#xff1a; 例2&#xff1a;word中添加内容 …...

Python小程序 - 文件处理3:正则表达式

正则表达式&#xff1a;文本年鉴表。遗留的问题很多。。。用AI再想想 需求&#xff1a;读入txt文件&#xff0c;过滤文件有关年记录 0&#xff09;读入txt文件 1&#xff09;以“。”&#xff0c;中文句号&#xff0c;为界区分一句&#xff0c;最小统计单位 2&#xff09;年格…...

JAVA中正则表达式的入门与使用

JAVA中正则表达式的入门与使用 一&#xff0c;基础概念 正则表达式&#xff08;Regex&#xff09; 用于匹配字符串中的特定模式&#xff0c;Java 中通过 java.util.regex 包实现&#xff0c;核心类为&#xff1a; Pattern&#xff1a;编译后的正则表达式对象。 Matcher&#…...

智慧能源管理平台:驱动电网数字化转型,引领绿色能源新时代

安科瑞 华楠18706163979 一、引言 在全球能源转型和"双碳"目标的推动下&#xff0c;微电网作为分布式能源系统的重要组成部分&#xff0c;正迎来快速发展期。安科瑞电气股份有限公司推出的微电网智慧能源管理平台&#xff08;EMS 3.0&#xff09;&#xff0c;通过整…...

OpenCV 图形API(30)图像滤波-----腐蚀操作函数erode()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 使用特定的结构元素腐蚀图像。 cv::gapi::erode 是 OpenCV 的 G-API 模块中用于执行图像腐蚀操作的函数。腐蚀是一种基本的形态学操作&#xff0…...

02-MySQL 面试题-mk

1.如何定位慢查询? 什么是慢查询? 页面加载过慢、接口压测响应时间过长(超过1s) 慢查询出现的情况有哪些? 聚合查询多表查询表数据量过大查询深度分页查询如何定位慢查询? 方案一:开源工具 调试工具:Arthas运维工具:Prometheus、Skywalking**Arthas:**可以使用命令的…...

利用安固软件实现电脑屏幕录像:四种实用方法分享

在日常工作中&#xff0c;有时我们需要录制电脑屏幕以进行教学演示、软件操作记录或重要会议的存档。安固软件终端安全管理系统提供了强大的屏幕录像功能&#xff0c;可以满足这些需求。 接下来&#xff0c;本文将介绍如何使用安固软件设置电脑实时画面录像&#xff0c;并分享…...

Gitee DevSecOps 以 CBB 驱动军工研发范式革新:平台化管理构件实践

随着军工软件向智能化、标准化与集约化发展&#xff0c;传统研发模式在效率、质量及协同方面面临显著瓶颈。项目规模扩大与系统复杂度的提升&#xff0c;亟需一种创新研发范式。Gitee DevSecOps 平台基于 CBB&#xff08;通用构件库&#xff09;理念&#xff0c;通过模块化、标…...

spring:xml方式调用构造方法创建Bean,调用set方法配置字段

如题&#xff1a; 要创建的Bean类UserServiceImpl02 &#xff1a; package com.itheima.service.impl;import com.itheima.dao.interfaces.InterfaceUserDao; import com.itheima.service.interfaces.InterfaceUserService;/*** copyright 2003-2024* author qiao wei* da…...

PM2 完全指南:Node.js 应用后台启动、关闭与重启详解

文章目录 **PM2 完全指南&#xff1a;Node.js 应用后台启动、关闭与重启详解****1. 什么是 PM2&#xff1f;****2. 安装 PM2****全局安装****验证安装** **3. 使用 PM2 启动 Node.js 应用****基本启动****指定应用名称****集群模式&#xff08;多进程负载均衡&#xff09;****监…...

LeetCode算法题(Go语言实现)_40

题目 给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层&#xff0c;而根节点的子节点位于第 2 层&#xff0c;依此类推。 请返回层内元素之和 最大 的那几层&#xff08;可能只有一层&#xff09;的层号&#xff0c;并返回其中 最小 的那个。 一、代码实现 import &…...

网关与路由器知识点

1.自治系统是由同构型的网关连接的因特网。自治系统内部的网关之间执行内部网关协议IGP&#xff0c;半天自治系统之间用外部网关协议EGP交换路由信息。 2.BGP4是一种动态路由发现协议&#xff0c;支持无类别域间路由CIDR&#xff0c;应用于不同ISP的网络之间&#xff0c;成为事…...

【Hadoop入门】Hadoop生态之Pig简介

1 什么是Pig&#xff1f; 在大数据分析领域&#xff0c;Apache Pig是一个不可忽视的重要工具。Pig是Apache Hadoop生态系统中的一个高级数据分析平台&#xff0c;它提供了一种称为Pig Latin的脚本语言&#xff0c;用于简化大规模数据集的并行处理。Pig的核心思想是将复杂的数据…...

TPS入门DAY04 服务器篇

1.创建委托并绑定回调&#xff0c;实现解耦 /* 创建会话完成 */ DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMultiPlayerOnCreateSessionCompleted, bool, bWasSuccessful); /* 开始会话完成 */ DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMultiPlayerOnStartSessionC…...

YOLO学习笔记 | YOLOv8环境搭建全流程指南(2025.4)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== YOLOv8环境搭建 一、环境准备与工具配置1. Conda虚拟环境搭建2. CUDA与…...

Java 设计模式:适配器模式详解

Java 设计模式&#xff1a;适配器模式详解 适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它通过将一个类的接口转换为客户端期望的另一个接口&#xff0c;使原本不兼容的类能够协同工作。适配器模式就像现实生活中的电源适配器&#xf…...

Java的基本语法(1)

一、运算符和表达式 举例说明什么是运算符&#xff0c;什么是表达式&#xff1a; int a 1; int b 2; int c a b; 在这个例子当中&#xff0c;是运算符&#xff0c;并且是算术运算符 ab是表达式&#xff0c;因为是运算符&#xff0c;所以ab是算术表达式 1.1算术运算符 …...

Spark-Core编程二

23) sortByKey import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object Cww { def main(args: Array[String]): Unit { // 创建 SparkConf 对象&#xff0c;设置应用名称和运行模式 val conf new SparkConf().setAppName("SortBy…...

【antd + vue】Modal 对话框:修改弹窗标题样式、Modal.confirm自定义使用

一、标题样式 1、目标样式&#xff1a;修改弹窗标题样式 2、问题&#xff1a; 直接在对应css文件中修改样式不生效。 3、原因分析&#xff1a; 可能原因&#xff1a; 选择器权重不够&#xff0c;把在控制台找到的选择器直接复制下来&#xff0c;如果还不够就再加&#xff…...

JavaWeb 课堂笔记 —— 08 请求响应

本系列为笔者学习JavaWeb的课堂笔记&#xff0c;视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程&#xff0c;实现javaweb企业开发全流程&#xff08;涵盖SpringMyBatisSpringMVCSpringBoot等&#xff09;》&#xff0c;章节分布参考视频教程&#xff0c;为同样学习…...

DataWorks智能体Agent发布!基于MCP实现数据开发与治理自动化运行

在传统的数据开发工作中&#xff0c;企业用户或者开发者常常需要进行繁琐的配置、复杂的代码撰写、反复的性能调优和大量重复性的操作&#xff0c;才能实现数据开发、数据集成和数据治理等工作&#xff0c;效率十分低下。 近日&#xff0c;阿里云大数据开发治理平台DataWorks基…...

VitePress 项目部署 cloudflare page 提示 Node 构建错误

提示的构建错误信息为&#xff1a; 09:35:29.838 Error: Exit with error code: 1 09:35:29.839 at ChildProcess.<anonymous> (/snapshot/dist/run-build.js) 09:35:29.839 at Object.onceWrapper (node:events:652:26) 09:35:29.839 at ChildProcess.emit …...

VUE的node包缓存很严重,问题及解决办法

以下是一些可能导致缓存问题的地方以及如何检查和解决这些问题的建议&#xff1a; 1. 检查依赖包的版本是否过时 某些依赖包可能有已知的缓存问题或性能问题。以下是需要特别注意的几个包&#xff1a; Vue CLI 相关&#xff1a; vue/cli-service 和 vue/cli-plugin-babel 的版…...

<C#>在 .NET 开发中,依赖注入, 注册一个接口的多个实现

在 .NET 开发里&#xff0c;有时一个接口会有多个实现类&#xff0c;此时就需要向依赖注入容器注册多个实现。下面会详细介绍不同场景下如何注册多个实现&#xff0c;以及怎样从容器中解析这些实现。 1. 注册多个实现 在 .NET 中&#xff0c;依赖注入容器可以通过不同方式注册…...

计算机视觉色彩空间全解析:RGB、HSV与Lab的实战对比

计算机视觉色彩空间全解析&#xff1a;RGB、HSV与Lab的实战对比 一、前言二、RGB 色彩空间​2.1 RGB 色彩空间原理​2.1.1 基本概念​2.1.2 颜色混合机制​ 2.2 RGB 在计算机视觉中的应用​2.2.1 图像读取与显示​2.2.2 颜色识别​2.2.3 RGB 色彩空间的局限性​ 三、HSV 色彩空…...

美食推荐小程序

用户端 1. **定位与筛选** - **精准定位**&#xff1a;根据用户所在位置&#xff0c;推荐周边美食餐厅。 - **筛选条件**&#xff1a;支持按菜系&#xff08;如川菜、粤菜&#xff09;、价格区间、评分、距离远近等筛选餐厅。 2. **餐厅展示** - **基本信息**&#xff1a;…...

使用django实现windows任务调度管理

在 Django 中实现 Windows 任务调度管理&#xff0c;你可以使用几种不同的方法。最常见的方法是使用 Django 自带的 celery 或者 django-background-tasks 库&#xff0c;或者使用 Windows 自带的任务计划程序。下面我会分别介绍这几种方法&#xff1a; 方法 1&#xff1a;使用…...

【Android】Android 打包 Release 崩溃问题全解析:Lint 错误、混淆类丢失及解决方法大全

摘要&#xff1a; 在 Android 项目的 Release 打包过程中&#xff0c;经常遇到诸如 Lint 校验失败、程序闪退、类找不到等问题。本文将详细分析 Android 打包时常见的崩溃原因&#xff0c;特别是如何应对 Lint 报错、混淆引发的类丢失&#xff08;NoClassDefFoundError&#xf…...

【Python 开源】你的 Windows 关机助手——PyQt5 版定时关机工具

&#x1f5a5;️ 你的 Windows 关机助手——PyQt5 版定时关机工具 相关资源文件已经打包成EXE文件&#xff0c;可双击直接运行程序&#xff0c;且文章末尾已附上相关源码&#xff0c;以供大家学习交流&#xff0c;博主主页还有更多Python相关程序案例&#xff0c;秉着开源精神的…...

布局决定终局:基于开源AI大模型、AI智能名片与S2B2C商城小程序的战略反推思维

摘要&#xff1a;在商业竞争日益激烈的当下&#xff0c;布局与终局预判成为企业成功的关键要素。本文探讨了布局与终局预判的智慧性&#xff0c;强调其虽无法做到百分之百准确&#xff0c;但能显著提升思考能力。终局思维作为重要战略工具&#xff0c;并非一步到位的战略部署&a…...

vue3循环表单【以el-form组件为例】,如何校验所有表单,所有表单校验通过后提交

1.循环时&#xff0c;在组件标签上使用ref绑定组件实例 3.如何校验所有表单都通过后方可提交&#xff1f;利用promise.all()判断 代码如下&#xff1a; <template><div><!-- 循环渲染表单 --><el-formv-for"(formItem, index) in formList":…...