本地怎么远程调试服务器

服务启动的时候加上Java参数

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

这个Java启动参数 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999 是用于启用 Java调试协议(JDWP) 的,允许调试器(如IntelliJ IDEA、Eclipse等)附加到正在运行的JVM进程上进行远程调试。以下是参数的详细解释:


参数分解

  1. -agentlib:jdwp
    • 表示加载JVM的本地代理库 jdwp(Java Debug Wire Protocol),用于支持调试功能。
  2. transport=dt_socket
    • 指定调试器与JVM之间的通信方式为 Socket连接 (默认端口可通过address指定)。
    • 其他可选值:dt_shmem(仅Windows,共享内存通信)。
  3. server=y
    • 表示当前JVM作为调试服务器,等待调试器主动连接(y=yes)。
    • 如果设为 n,则JVM会尝试以客户端模式连接调试器(较少用)。
  4. suspend=n
    • 是否在启动时暂停JVM,等待调试器连接后再继续执行:
      • y:暂停(适合调试启动问题)。
      • n:不暂停,直接运行(适合调试运行中的代码)。
  5. address=9999
    • 指定调试监听的端口号(这里是 9999)。调试器需要配置相同的端口才能连接。
    • 可以是具体端口(如 9999),或 *(随机端口,但需通过其他方式获取实际端口)。

典型使用场景

  1. 远程调试
    • 启动Java应用时添加此参数,然后在IDE中配置远程调试,连接到目标JVM的 9999 端口。
  2. 本地调试
    • 即使本地运行,也可以通过此参数启用调试,再通过IDE附加到进程。

示例命令

复制代码

bash

|---------------------------------------------------------------------------------------------|
| java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999 -jar your_app.jar |


注意事项

  1. 安全性
    • 调试端口会暴露JVM内部信息,不要在生产环境使用,或通过防火墙限制访问IP。
  2. 端口冲突
    • 如果 9999 被占用,可更换为其他端口(如 5005)。
  3. 性能影响
    • 调试模式会略微降低运行速度,但通常可忽略。
  4. -Xdebug 的区别
    • 旧版JVM可能使用 -Xdebug -Xrunjdwp:...,但 -agentlib:jdwp 是更现代的写法。

IDE配置示例(IntelliJ IDEA)

  1. 点击 Run → Edit Configurations
  2. 选择 + → Remote JVM Debug
  3. 填写 Host(目标机器IP)和 Port(如 9999)。
  4. 启动Java应用后,在IDE中点击调试按钮即可连接。

总结

这个参数的作用是:
"在JVM的9999端口上启动一个调试服务器,允许调试器通过Socket连接,且JVM启动后不暂停等待调试器。"

常用于开发或测试环境中诊断问题,但需避免在生产环境使用。

相关推荐
The森11 分钟前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
文艺理科生Owen21 分钟前
Nginx 路径映射深度解析:从本地开发到生产交付的底层哲学
运维·nginx
期待のcode25 分钟前
Redis的主从复制与集群
运维·服务器·redis
翼龙云_cloud27 分钟前
腾讯云代理商: Linux 云服务器搭建 FTP 服务指南
linux·服务器·腾讯云
REDcker1 小时前
gRPC开发者快速入门
服务器·c++·后端·grpc
江湖有缘2 小时前
零基础入门:使用 Docker 快速部署 Organizr 个人主页
java·服务器·docker
wangjialelele2 小时前
Linux下的IO操作以及ext系列文件系统
linux·运维·服务器·c语言·c++·个人开发
HypoxiaDream2 小时前
LINUX-Ext系列⽂件系统
linux·运维·服务器
小毛驴8502 小时前
Linux curl 命令用法
linux·运维·chrome
李斯啦果2 小时前
【Linux】Linux目录配置
linux·运维·服务器