Eclipse远程调试Java代码的三种方法
Eclipse远程调试Java代码的三种方法,
第1种方法是用来调试已经启动的Java程序,Eclipse可以随时连接到远程Java程序进行调试,
第2种方法可以调试Java程序启动过程,但是Eclipse不能随时连接到远程Java程序进行调试,
第3种方法可以同时具备上面两种的优点,在调试Java程序启动过程后,
即使断开后Eclipse还是可以随时连接到远程Java程序进行调试。
在实际使用过程,一般使用第1种调试方法,
在需要调试Java程序启动过程的时候,才会使用第3种方法,
第3种和第1种方法的区别只是在于suspend=y/n,
第2种方法一般很少使用。
1.Java程序开启远程Debug
在程序的JVM启动参数加入如下Debug参数:
-Xdebug -Xrunjdwp:transport=dt_socket,address=1088,server=y,suspend=n
参数说明:
-Xdebug 启用调试
-Xrunjdwp 加载JDWP的JPDA参考执行实例
transport 用于在调试程序和JVM使用的进程之间通讯
dt_socket 套接字传输
address=1088 调试服务器的端口号,客户端用来连接服务器的端口号
server=y/n JVM是否需要作为调试服务器执行
suspend=y/n 是否在调试客户端建立连接之后启动JVM 。
2.Eclipse远程调试Java代码的前2种方法
下面的图表示的是Eclipse调试的两种类型,
图片下半部分是第1种Socket Attach类型,表示远程程序正常运行,允许Eclipse调试器随时连接到JVM,
图片上半部分是第2种Socket Listen类型,表示Eclispe调试器先启动监听,JVM启动时主动连接调试器。
2.1.第1种Socket Attach调试方法
远程JVM的Debug参数配置:
-Xdebug -Xrunjdwp:transport=dt_socket,address=1088,server=y,suspend=n
注意suspend=n,表示立即启动JVM,不等待调试客户端建立连接。
Eclipse调试器配置:
Eclipse -> Run -> Debug Configurations... -> Remote Java Application -> 右键点击New
打开一个默认名为New_configuration的调试配置界面,如下:
Connection Type: Socket Attach
Host: localhost (远程Java程序所在的主机IP)
Port: 1088 (远程Java程序的调试端口)
点击Debug即可连接到已经启动的远程Java程序进行调试,
但是不能调试Java程序启动过程。
2.2.第2种Socket Listen调试方法
远程JVM的Debug参数配置:
-agentlib:jdwp=transport=dt_socket,suspend=y,address=192.168.0.1:1088
注意address需要填写Eclipse调试器所在的IP地址和Port端口。
Eclipse -> Run -> Debug Configurations... -> Remote Java Application -> 右键点击New
打开一个默认名为New_configuration的调试配置界面,如下:
Connection Type: Socket Listen
Port: 1088 (远程调试端口)
点击Debug先启动Eclipse监听,
然后启动远程JVM程序,会主动Eclipse调试器进行调试,
这种方法可以调试Java程序启动过程,
但是不能随时连接到远程java程序进行调试。
3.第三种调试方法
第三种调试方法和第1中调试方法类似,
区别在于远程JVM的Debug参数中suspend=y:
-Xdebug -Xrunjdwp:transport=dt_socket,address=1088,server=y,suspend=y
具体流程是先启动远程的Java程序,
但此时JVM不会真正启动,会等待调试客户端建立连接之后再启动JVM,
然后参考第一种方法启动Eclipse的Socket Attach类型调试器,
此时JVM会真正的启动,而且已经连接上Eclipse的调试器,
可以调试Java程序启动过程,而且即使断开后,
Eclipse还是可以随时连接到远程Java程序进行调试,
缺点在于必须启动Eclipse调试器监听,
否则会导致JVM程序无法启动一直在等待。
4.参考文章
Eclipse远程调试Java代码的三种方法的更多相关文章
- 【Android】Eclipse自动编译NDK/JNI的三种方法
[Android]Eclipse自动编译NDK/JNI的三种方法 SkySeraph Sep. 18th 2014 Email:skyseraph00@163.com 更多精彩请直接访问SkySer ...
- YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法
上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把 ...
- 斐波那契数列-java编程:三种方法实现斐波那契数列
题目要求:编写程序在控制台输出斐波那契数列前20项,每输出5个数换行 斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … 这个数列 ...
- MYSQL添加远程用户或允许远程访问三种方法
添加远程用户admin密码为password GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY \'password\' WIT ...
- HOSt ip is not allowed to connect to this MySql server, MYSQL添加远程用户或允许远程访问三种方法
HOSt ip is not allowed to connect to this MySql server 报错:1130-host ... is not allowed to connect to ...
- 痞子衡嵌入式:大话双核i.MXRT1170之在线联合调试双核工程的三种方法(IAR篇)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1170下在线联合调试双核工程的方法(基于IAR). 前段时间痞子衡写过一篇<双核i.MXRT1170之单独在线调试从 ...
- (PASS)JAVA数组去重 三种方法 (不用集合)
第一种方法(只学到数组的看): 定义一个新的数组长度和旧数组的长度一样,存储除去重复数据的旧数组的数据和0, package demo01; import java.sql.Array; import ...
- {转}Java 字符串分割三种方法
http://www.chenwg.com/java/java-%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%88%86%E5%89%B2%E4%B8%89%E7%A7%8D%E6%9 ...
- 使用 Eclipse 远程调试 Java 应用程序
Eclipse 中的远程调试特性 Eclipse 是一个图形化 Java 调试器前端.JDI 在 org.eclipse.jdt.debug 包中实现.本文不详细讨论 JDI 实现.参见 参考资料 获 ...
随机推荐
- GO 时间处理
比较大小 比较大小 先把当前时间格式化成相同格式的字符串,然后使用time的Before, After, Equal 方法即可. time1 := "2015-03-20 08:50:29& ...
- Android: EditText设置属性和设置输入规则
1.EditText输入限制规则 在xml:EditText 设置属性 android:digits="ABCDE123&*" ABCDE123&*是你的限制规则 ...
- LocalDate计算两个日期相差天数
import org.apache.commons.lang.StringUtils; import java.time.LocalDate; import java.time.ZoneId; imp ...
- 令无数程序员加班的 Log4j2 远程执行漏洞复现
前情提要 Apache 存在 Log4j 远程代码执行漏洞,将给相关企业带来哪些影响?还有哪些信息值得关注? 构建maven项目引入Log4j2 编写 pom 文件 <?xml version= ...
- C#.NET编程小考30题错题纠错
1)以下关于序列化和反序列化的描述错误的是( C). a) 序列化是将对象的状态存储到特定存储介质中的过程 b) 二进制格式化器的Serialize()和Deserialize()方法可以分别用来实现 ...
- Jenkins安全加固
1.jenkins未授权访问 描述 jenkins不当配置可导致未授权访问管理控制台,可以通过脚本命令行执行系统命令.通过该漏洞,可以后台管理服务,通过脚本命令行功能执行系统命令,如反弹shell,w ...
- 安装Google BBR加速
目录 一.简介 二.安装 三.设置BBR 一.简介 Google BBR 是一款免费开源的TCP拥塞控制传输控制协议, 可以使Linux服务器显著提高吞吐量和减少TCP连接的延迟. 二.安装 1.yu ...
- epoll 使用详解
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发.在linux新的内核中,有了一种替换它的机制,就是e ...
- python selenium 多账户自动登入163邮箱
pycharm一些快捷键: ' ctrl ' +' / ' :注释 ' Tab ' :同时缩进 ' shift ' +' Tab ' :左移 一次缩进 本文webinfo.txt路径:C:\Pytho ...
- HMS Core版本发布公告
新增动作捕捉能力.通过简单拍摄即可获得人体3D骨骼关键点数据,广泛应用于虚拟形象.体育运动和医学分析等场景: 3D物体建模能力iOS版本上线. 查看详情>> 新增道路吸附能力.可根据坐标点 ...