文档章节

Eclipse远程调试linux主机的Java应用

班帅
 班帅
发布于 2012/12/04 00:00
字数 1314
阅读 373
收藏 0

Eclipse远程调试linux主机的Java应用

2012年03月27日00:00  it168网站原创 作者:皮丽华 编辑: 皮丽华 评论: 0

        在软件开发中,调试是不可或缺的一个环节,它可以帮助开发人员提高效率,节省开发时间。在我认为,本地调试是最优选择,通常情况下,当无法实现本地调试时,我们才会考虑远程调试。

  有些项目是运行在Linux 操作系统上,而我们大多数项目是在Windows 平台上完成开发的。特别是在投资银行领域,很多电子交易程序运行在Linux 服务器上,这会让开发过程显得较为繁琐,因为我们没法在本地的开发环境中运行这些代码。

  有时候无论是出于开发还是调试的考虑,我们可以让项目运行在Windows 平台上,但有时候,一些不可控因素,比如您的项目需要提供开发库的平台,或者需要一些Linux模块,Windows平台上无法满足这些需求,或者您的项目规模太大,无法在Windows 平台上成功运行,由于项目过度依赖一些系统,没法在Windows 开发平台中创建相同的运行环境。

  这种情况下,我的解决方法是借助模拟的对象来测试项目。当然,有时候通过线程单独来运行应用程序模块并不见得是最好的解决方案,特别是您需要在运行时环境下通过调试项目来查找一些子问题,这些方法就会显得不太实用。

在Eclipse IDE中远程调试Java应用程序

  Eclipse为我们提供了最有用的功能,称为“远程调试”。借助于远程调试,您可以在Windows 平台上调试Linux的运行情况,为了提高开发效率,非常有必要了解清楚如何安装远程调试,如何在Eclipse中实现远程调试。

  如何在Eclipse中安装远程调试

  1)在Eclipse中安装Java项目

  2) 选择项目,在“Run”菜单选项下选择“Debug Configurations”

在Eclipse IDE中远程调试Java应用程序

  Remote debugging with Eclipse 1

  3) 调试配置窗口将会弹出,选择左边的“Remote Java Application”图标,右键选择“New”。

在Eclipse IDE中远程调试Java应用程序

  Eclipse remote debugging 2



 4) 点击“New”以后,Eclipse会为您选中的项目创建远程Java应用配置。接下来的一步是为远程调试安装主机和端口。

在Eclipse IDE中远程调试Java应用程序

  Remote debugging in Eclipse 3

  5) 现在输入主机名和端口,如果你想从Eclipse中关闭运行在Linux平台上的 Java应用程序,请选中"Allow termination of remote VM”复选框。

  6) 在调试之前,确保设置好Java进程的各项调试信息,同时确保在同一个主机和端口上监听Java进程,否则Eclipse无法正常建立连系。

  7) 点击“Debug”开始调试主机和端口。

  8)您也可以在"Remote Java Application” ,"Debug Configurations"菜单下选中您的项目,然后点击"DEBUG"。

  为了远程调试一个Java应用程序,远程linux机器上确保JVM的调试选项如下:

  java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y suspend=y -jar stockTradingGUI.jar

 java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=y -Dfile.encoding=UTF-8 -jar Gate.jar

 

stockTradingGUI.jar为需要调试的jar包,确保此jar包跟本地Eclipse中的代码保持一致。

使用Java Debug Wire Protocol (jdwp) protocol ,我们可以让Java应用程序stockTradingGUI进入调试模式,监听端口为8001。suspend=y 时,Eclipse 将应用程序连接到指定调试端口后,应用程序才开始运行。

  有一点非常重要,先运行应用程序,然后连接它,否则Eclipse会抛出异常"Failed to connect to remote VM. Connection refused”.

  提示一:在JVM DEBUG参数中,有一个参数叫"suspend",它的取值有两个,“y”或者“n”,如果您刚开始就想调试的话,将参数设置为"suspend=y",这样Eclipse会远程连接Java应用程序。

  如果你想先运行项目,然后连接Eclipse,那么可以将参数设置为"suspend=n",这样的话,Java应用程序会正常运行,之后Eclipse会开始远程连接。

  提示二:使用启动脚本输入JVM调试参数,在脚本中使用变量isDebugEnabled或者REMOTE_DEBUG_PORT,当你想远程调试Java应用程序的时候,可以将这个变量导出。整个操作过程非常简单,只需要一次性的安装即可。

  提示三:如果你得到错误提示"Failed to connect to remote VM. Connection refused"或者"Connection refused: connect",那么可能出现的原因有两种可能。第一是您的Java项目没有运行在远程主机上,第二是输入端口和主机名有误,验证成功后,可以填写完整的主机名。

  提示四:您也要确保本地Eclipse和远程Eclipse运行的是相同的代码库。使用调试选项"-g"可以编译代码,Eclipse可以轻松搜集调试信息,比如本地变量的调试信息,默认情况下,使用调试选项“-g”,类文件可能更大,因为它可能会包含一些调试信息。

© 著作权归作者所有

共有 人打赏支持
班帅
粉丝 5
博文 26
码字总数 14902
作品 0
浦东
技术主管
私信 提问
eclipse远程debug,java项目

首先java项目要支付可远程调试得到启动时加入参数 启动远程调试 启用JMX,远程性能观察 eclipse配置 其中:host为远程java程序提供远程调试的IP,post为远程java程序提供远程调试的端口 使用 ...

有事没事
2014/12/05
0
0
使用 Eclipse 平台进行调试

调试是程序员无法回避的工作。调试方法有许多种,但归根结底,就是找到引发错误的代码。举例来说,在 Linux 应用程序中,分段故障被认为是最常见的错误之一。当程序尝试访问未分配给它的内存...

红薯
2010/01/12
1K
0
Eclipse远程调试Tomcat

应用场景 通过Java的JPDA远程调试功能将本地源码与远程部署的应用连接起来实现调试,其中程序源码与服务器上发布的编译代码版本要保持一致,保证调试定位准确。调试的过程中,部署在应用服务...

山山山
2014/11/11
0
0
Eclispe远程调试sqoop

利用eclipse远程调试功能,实现sqoop 本地环境集成: 利用cygwin部署 0、将sqoop-1.4.2放在/home/Administrator/hadoop 1、sqoop中设置HOMEHOME: 修改SQOOPHOME/bin/configure-sqoop :HAD...

超人学院
2015/06/03
0
0
远程调试运行在Resin上面的Web应用程序

有时候,我们不得不放弃在本地调试我们的程序,把我们的程序先布署到服务器,然后把调试信息都记在日志中,用眼睛瞅日志来调试程序。 不是用这种方式不行,只是效率太低,本来写程序是一件开...

古城痴人
2014/03/27
0
1

没有更多内容

加载失败,请刷新页面

加载更多

C++ vector和list的区别

1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。 因此能高效的进行随机存取,时间复杂度为o(1); 但因为内存空间是连续的,所以在进行插入和删除操作时,会造...

shzwork
今天
3
0
Spring之invokeBeanFactoryPostProcessors详解

Spring的refresh的invokeBeanFactoryPostProcessors,就是调用所有注册的、原始的BeanFactoryPostProcessor。 相关源码 public static void invokeBeanFactoryPostProcessors(Configu......

cregu
昨天
4
0
ibmcom/db2express-c_docker官方使用文档

(DEPRECIATED) Please check DB2 Developer-C Edition for the replacement. What is IBM DB2 Express-C ? ``IBM DB2 Express-C``` is the no-charge community edition of DB2 server, a si......

BG2KNT
昨天
3
0
Ubuntu 18.04.2 LTS nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic)

平台:Ubuntu 18.04.2 LTS nvidia-docker2 版本:2.0.3 错误描述:在安装nvidia-docker2的时候报dpkg依赖错误 nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic) 先看一下依......

Pulsar-V
昨天
4
0
学习笔记1-goland结构体(struct)

写在前面:若有侵权,请发邮件by.su@qq.com告知。 转载者告知:如果本文被转载,但凡涉及到侵权相关事宜,转载者需负责。请知悉! 本文永久更新地址:https://my.oschina.net/bysu/blog/3036...

不最醉不龟归
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部