Java调试通过-agentlib:jdwp参数启用,核心格式为-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005,支持命令行、Maven、IDE及Docker等多种配置方式,需注意端口、网络与安全限制。
在Java环境中开启调试参数,核心是通过JVM启动选项添加-agentlib:jdwp参数,使JVM进入调试就绪状态,从而允许IDE(如IntelliJ IDEA、Eclipse)或调试工具远程连接。
标准调试启动参数如下:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
各部分含义说明:
y则JVM会暂停直到调试器接入(适合调试启动逻辑)address=5005;Java 9+支持*:5005以允许远程连接)根据应用部署方式选择对应配置入口:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -jar app.jar
pom.xml中配置spring-boot-maven-plugin的jvmArguments,或直接运行:mvn spring-boot:run -Dspring-boot.run.jvmArguments="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"
器中启用调试:docker run命令中加入-e JAVA_TOOL_OPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005",并映射端口:-p 5005:5005
调试模式开启后需注意以下几点:
netstat -an | grep 5005(Linux/macOS)或netstat -ano | findstr :5005(Windows)检查address=*:5005需JDK 9+支持;旧版本请改用address=0.0.0.0:5005并确认JVM兼容性suspend=y导致服务无法启动Listening for transport dt_socket at address: 5005
调试参数本身不改变业务逻辑,只打开JDWP协议通道。配对正确后,IDE即可设置断点、查看变量、单步执行——关键在于JVM与调试器两端的transport、address、port严格一致。