【面试题】IDEA实现Debug远程调试Linux中的系统

news2024/9/22 12:46:11

有朋友面试时被问到,怎么远程调试部署在Linux中的系统?听到这个问题,那位朋友直接懵了,第一反应是震惊,已经部署在Linux中的系统还能调试? 沉默了几秒,只好说没有远程调试过Linux中的系统,一般线上问题都是看日志解决的,本地运行才通过调试解决。 那么,真的能在本地远程调试Linux系统吗?

接下来,介绍一下在IDEA中调试远程部署在Linux系统中的详细过程。

1、需求

项目已经部署到Linux服务器上,如何像在本地IDEA中运行时一样,可以进行断点联调呢?

2、解决方案

IDEA已经考虑了这种情况,自带远程调试功能。其它工具,像是Eclipse也一样可以。

大致步骤是,在服务启动时,开启远程调试的JVM参数,然后利用IDEA自带的远程调试工具,Remote JVM Debug 配置相应参数即可。

3、具体步骤

3.1 服务端

服务启动的时候,添加JVM支持远程调试的参数

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8081
  • jdwp: Java Debug Wire Protocol(Java调试线协议)是Java平台提供的一种标准调试协议,它允许调试器与Java应用程序进行通信。
  • transport=dt_socket: 指定传输层使用的通信方式。这里 dt_socket 表示使用TCP/IP套接字作为传输机制。这使得调试器能够通过网络连接到正在运行的Java进程。
  • server=y 表示这个JVM实例将作为服务器端等待客户端(调试器)的连接。
  • suspend=n 表示JVM启动时不暂停执行。如果设为 suspend=y,则JVM会在启动后暂停,等待调试器连接。
  • address=5005 指定监听(调试)的端口号为8081。
3.2 IDEA配置

在IDEA中,打开远程服务运行的代码,不用启动项目,只要进行如下配置:

配置信息如下

点击OK,配置完成后,Debug启动remote,然后就可以开始调试了。

连接成功控制台会显示下面内容,虽然本地IDEA没有启动项目,但远程启动了项目,会自动与本地的代码进行匹配,达到与本地启动运行时一样的调试效果。

3.3 具体调试

和在本地IDEA运行服务一样调试,可以用Postman等测试工具访问对应接口,或者直接浏览器访问。访问后会进入到对应断点位置。

3.4 面试问题总结

如何远程调试的:服务器启动的时候设置JVM远程调试的参数(设置协议、调试端口)。

开发工具中添加对应的远程调试的配置启动项,设置调试的端口和服务器ip地址。

3.5 误区

一般公司或者企业的服务器是在内网环境下,很少有情况会关闭防火墙或者开放允许的调试端口的。所以,大部分情况下,远程调试都不被允许的。

这种情况下通常都是,看服务日志,定位具体问题,再解决问题。

如果可以远程调试,需要确保远程服务器的代码版本和IDEA中的代码版本是一致的,这样才能分析。不一致的话,可能会断点不准确。

通常情况,先git获取(check out) 发布到服务器的那个版本的代码,然后再进行远程调试。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Debian 12 Linux系统安装Mongodb服务器步骤

在本地或云中运行的 Debian12 或 11 Linux 发行版上设置 MongoDB 数据库服务器并不是一件困难的事情,但是,必须知道如何使用终端和 Linux 命令行。虽然 MongoDB 除了社区版之外还提供了企业版,但在这里我们将使用这个免费的开源 NoSQL 文档数…

Spring基础知识学习总结(四)

&#xff08;5&#xff09;Spring新注解 使用上面的注解还不能全部替代xml配置文件&#xff0c;还需要使用注解替代的配置如下&#xff1a; 非自定义的Bean的配置&#xff1a;<bean>加载properties文件的配置&#xff1a;<context:property-placeholder>组件扫描…

Linux 文件、重定向、缓冲区

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a; Linux 目录 一、文件 1、文件的理解&#xff08;浅层&#xff09; 1.文件是什么&#xff1f; 2.文件操作的前提 3.文件的存储 4.一个进程可以打开多个文件吗&#xff1f;如果可以怎么管理的&#xf…

【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式

文章目录 webView使用步骤示例 HttpURLConnection使用步骤示例GET请求POST请求 okHttp使用步骤1. 添加依赖2. 创建OkHttpClient实例3. 创建Request对象构建请求4. 发送请求5. 获取响应 Pull解析方式1. 准备XML数据2. 创建数据类3. 使用Pull解析器解析XML webView WebView 是 An…

三大浏览器Google Chrome、Edge、Firefox内存占用对比

问题 Chrome、Edg、Firefox三家究竟谁的占用少 结论 打开一个页面内存占用 Firefox>Edge>Chrome 打开打量页面内存占用 Firefox>Chrome>Edge 从监视器可以看到Edge增加一个页面增加一个页面不到100M而其它浏览器需要150M左右;Firefox浏览器主线程内存占用800M比…

Java之TCP网络编程

TCP网络编程 1 概述 在TCP通信协议下&#xff0c;计算机网络中不同设备上的应用程序之间可以通信&#xff0c;通信时需严格区分客户端&#xff08;Client&#xff09;与服务器端&#xff08;Server&#xff09;。 在Java中&#xff0c;对于这样基于TCP协议下连接通信的客户端…

数据结构-常见排序的七大排序

1.排序的概念及其运用 1.1排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录…

Arkose 验证码:网络抓取工具的最佳实践

网络爬虫已经成为企业和开发人员最常用的工具&#xff0c;用于有效地从网络中收集数据。当然&#xff0c;大家都会遇到的最常见挑战是大量的 CAPTCHA 出现&#xff0c;这会使工作流程陷入停滞。其中&#xff0c;Arkose Labs Captcha&#xff08;称为 Funcaptcha&#xff09;以其…

探索N卡录制:游戏录屏工具会是网页录屏的最佳伴侣吗?

在这个数字时代&#xff0c;无论是游戏玩家、教育工作者还是内容创作者&#xff0c;高质量的录屏工具都是必不可少的。NVIDIA显卡&#xff08;简称N卡&#xff09;以其卓越的图形处理能力而闻名&#xff0c;而N卡录制功能则进一步扩展了其应用范围&#xff0c;特别是在游戏录屏…

【SpringBoot 属性加载机制】

SpringBoot 属性加载 一个 SpringBoot 应用的配置属性可以有多种不同的来源, 比如可以来自操作系统的环境变量, 比如可以来自 application.yaml 文件; 每一种不同的属性来源, 都会被 SpringBoot 封装成一个PropertySource对象, 保存在 Environment 对象的 PropertySources 类型…

proteus仿真c51单片机(三)多定时任务的编程——时分秒发生器

实验步骤 1、打开PROTEUS软件选取元件&#xff0c;连线绘制电路图。 2、打开KEIL软件编制程序进行调试、编译。 3、将编译的HEX代码装入PROTEUS软件绘制的电路图的单片机中。 4、仿真运行观察实验现象&#xff0c;若与要求的实验现象不同&#xff0c;检查程序和电路图找…

Linux目录结构常用命令和文件管理解析

一.Linux目录结构 bin:binary二进制&#xff0c;普通用户执行命令都在这里 boot:和计算机启动的相关文件都放这 dev:device设备、驱动、硬件 etc:配置文件也叫控制台文件 home:来装用户自己的文件的&#xff0c;普通用户的家目录主目录&#xff0c;每个普通用户进来都有自…

PythonStudio 控件使用常用方式(十二)TMaskEdit

PythonStudio是一个极强的开发Python的IDE工具&#xff0c;它使用的是Delphi的控件&#xff0c;常用的内容是与Delphi一致的。但是相关文档并一定完整。现在我试试能否逐步把它的控件常用用法写一点点&#xff0c;也作为PythonStudio的参考。 从1.2.1版开始&#xff0c;Python…

Android compose OutlinedTextField 输入框设置固定高度后,内容挤压显示不全

原因&#xff1a; decorationBox里边contentPadding() 默认为16.dp internal val TextFieldPadding 16.dp 修改方法1&#xff1a; copy OutlinedTextField.kt 源码&#xff0c;decorationBox的contentPadding参数开放出来 /*** author 创建人&#xff1a;蒙石瑞* date …

【大模型从入门到精通11】openAI API 提示链的力量2

这里写目录标题 提示链的力量&#xff1a;阅读和处理JSON字符串基于产品信息生成用户响应综合性的客户服务互动结论理论问题 提示链的力量&#xff1a;阅读和处理JSON字符串 当处理复杂的工作流程时&#xff0c;通常会以JSON格式传递数据。以下示例演示了如何将JSON字符串转换…

【Linux QT】添加Json-C库

前言 在Linux应用开发中&#xff0c;Linux设备和服务器通信时&#xff0c;两者之间数据的传输通常采用JSON数据格式来作为载体&#xff0c;便于两者之间的数据交互。当设备端接收到服务端下发的JSON数据&#xff0c;设备端需要对JSON格式的数据进行解析&#xff1b;当设备端需要…

Java设计模式(命令模式)

定义 将一个请求封装为一个对象&#xff0c;从而让你可以用不同的请求对客户进行参数化&#xff0c;对请求排队或者记录请求日志&#xff0c;以及支持可撤销的操作。 角色 抽象命令类&#xff08;Command&#xff09;&#xff1a;声明用于执行请求的execute方法&#xff0c;通…

CSS实现hover时文本上下出现线条

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>复杂Hover效果示例</title><style>p {f…

【案例38】Can’t get connection from database 排查详细记录

问题现象 客户要搭建灰度环境&#xff0c;启动后&#xff0c;登录超级管理员报连接不上数据库的错误。 Can’t get connection from database(XXX) 问题分析 1、一般碰到这个问题&#xff0c;初步就开始怀疑是sysconfig数据源不通导致的。 发现数据源是通的。 2、在sysconf…

【案例40】Apache中mod_proxy模块的使用

NC中间件 应用场景&#xff1a;配置了apache的情况&#xff0c;包括uap集群&#xff0c;配置https等场景下均适用&#xff1b;如果是单机&#xff08;NC单结点情况不存在问题&#xff0c;则不用配置这项; was环境也不用配置此项。&#xff09; 解决方案&#xff1a;按如下两…