网站首页 > java教程 正文
一、概述
Java的远程debug,可以在本地打断点,调试远程程序。方法是修改JAVA_OPTS参数,使用Eclipse或IDEA等工具调试。
远程调试有两种方式:
- 主动连接调试:服务端配监控端口,IDE连接远程端口。
- 被动连接调试:IDE设置监听端口,等远程连接本地端口。
注意本地和远程的代码要一致,另外注意打开防火墙需要用到的端口。
二、主动连接调试
1. 说明
远程服务需要使用配置启动脚本:
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"
启动jar可以使用命令:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar test.jar
参数说明:
- Xdebug :通知JVM工作在DEBUG模式
- Xrunjdwp:通知JVM使用Java debug wire protocol来运行调试程序
- transport:连接方式使用socket。如果是本机也可以使用共享内存
- server=y:当前调试服务端,值为n表示调试客户端
- suspend=n:启动时不中断
- address:监听的端口
注意jdk 版本不同时,命令会有所区别。
2. 操作步骤
2.2.1 IDEA 设置 remote configuration
Debugger mode 选择 Attach to remote JVM,
Transport设置 Socket
Host设置 服务端IP
把下面的Command line arguments for remote JVM复制下来用来启动服务器端程序。
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
注意根据实际情况,选择右侧的JDK版本。
2.2.2 服务器启动jar程序
## 参数必须在 -jar 之前
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar your.jar
启动java程序后日志会提示:
Listening for transport dt_socket at address: 5005
2.2.3 在idea设置断点并启动程序
这时就可以开发地在IDEA里远程调试Java程序啦。
在Eclipse里也可以方便地进行设置:
三、被动连接调试
一般用来调试远程程序无法启动的问题,类似上面配置,在IDEA里选择 Listen to remote JVM,其它可以参照界面设置。我暂时用不到它,就没有动手测试了。
猜你喜欢
- 2024-10-29 推荐一款码云GVP级别Star近1W的开源Java后台管理系统:RuoYi
- 2024-10-29 Android Studio编写运行测试纯java代码可带main()函数
- 2024-10-29 Java官方笔记1编写运行Java程序(java运行环境下载)
- 2024-10-29 宝藏脚本!Windows快速启动Java应用服务,提升开发效率!
- 2024-10-29 JVM是如何运行Java代码的(jvm怎么运行的)
- 2024-10-29 JAVA线上问题排查利器-Arthas(java在线答疑系统)
- 2024-10-29 用java代码启动一个电脑上的应用程序
- 2024-10-29 BeanShell:动态执行java代码(java动态运行一段代码)
- 2024-10-29 Java线上问题排查神器Arthas实战分析
- 2024-10-29 开源的Java代码生成器(java开源代码网站)
你 发表评论:
欢迎- 07-15采用Oracle OSB总线进行服务注册和接入
- 07-15javaEE 新闻管理系统 oracle11+tomcat6
- 07-15从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 07-15如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 07-15【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 07-15【mykit-data】 数据库同步工具(数据库表同步工具)
- 07-15[Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- 07-15Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- 最近发表
-
- 采用Oracle OSB总线进行服务注册和接入
- javaEE 新闻管理系统 oracle11+tomcat6
- 从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 【mykit-data】 数据库同步工具(数据库表同步工具)
- [Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- Oracle数据库云服务系列新增前所未有的企业级功能
- 直播预告丨如何实现Oracle存储过程到java的一键转化
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)