本地怎么远程调试服务器

服务启动的时候加上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启动后不暂停等待调试器。"

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

相关推荐
DianSan_ERP5 小时前
电商架构演进:如何在高并发场景下实现多平台API的标准化履约?
运维·前端·网络·安全·架构·自动化
恒5395 小时前
Linux文件系统I
linux·运维·服务器
阿成学长_Cain5 小时前
Linux ipcs 命令超全详解:查看共享内存 / 消息队列 / 信号量,IPC 运维必备
linux·运维·服务器·网络·数据库
青瓦梦滋6 小时前
协议定制/序列化-反序列化(Linux视角)
linux·服务器·网络·c++
运维老郭8 小时前
【K8s运维实战】Kubernetes临时存储卷实战:emptyDir核心用法与gitRepo弃用迁移指南
运维·云原生·kubernetes
珠海西格电力8 小时前
云边端协同架构:零碳园区管理系统的技术底座
大数据·运维·人工智能·算法·架构·能源
阿成学长_Cain9 小时前
Linux dirs命令详解|Bash目录堆栈管理快速切换目录实战教程
linux·运维·前端·数据库
小羊Yveesss9 小时前
2026年微信小程序后端怎么搭建?后台、数据、接口和运维怎么选
运维·微信小程序·小程序
想你依然心痛11 小时前
嵌入式Linux安全加固:SELinux、Capabilities与Seccomp——强制访问控制与沙箱
linux·运维·安全