Eclipse远程调试(远程服务器端监听)
前提:远程服务器上运行的WEB项目class对应的源码与本地项目中必须保持一致,也就是远程tomcat部署的项目就是本机项目打包过去的,而本机项目没有发生变动。
远程服务器端
服务器端配置eclipse调试器监听端口,有两种方式,任选其一
第一种方式:
环境变量
export JPDA_ADDRESS=9999
启动tomcat
使用sh catalina.sh jpda start启动
注意:不要用startup.sh
通过这条命令启动tomcat,会监听JPDA_ADDRESS设置的端口,等待调试器连接。
如果不配置JPDA_ADDRESS,默认监听8000端口
第二种方式:
配置$tomcat_home/bin/catalina.sh
加上如下一行
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9988"
说明:server=y 是指目标应用程序作为服务监听将要连接的远程调试器(常用);
suspend=y 是指目标VM将暂停,直到调试器应用程序进行连接(若需要调试启动错误,很有用);
suspend=n 是指目标VM不暂停;
address=9988 监听端口。
启动tomcat
直接通过startup.sh启动即可
通过ps -aux|grep tomcat查看启动的tomcat进程,刚才配置的-Xdebug等选项出现在进程信息中,证明配置成功
本机调试端
调试器配置
在本地eclipse中点击debug按钮,选择Debug Configurations....,如下图

点击选项后,弹出一个窗口,双击左侧Remote Java Application,如下图

Name:自定义,任意名称
Project:本机eclipse中的WEB项目,与远端服务器上部署的WEB项目一致
Host:被调试的远端服务器ip
Port: 远端服务器中环境变量JPDA_ADDRESS的值
配置完成后点击Apply,随后点击Debug,eclipse窗口右下角出现
这里ConnectionType我们选择的是Standard(Socket Attach)方式调试,等待这个进度条跑完,直到consle的红色按钮变成灰色,此时已经完成了服务器端调试准备

测试调试
源码打断点
在本机eclipse源码中找到一处要调试的地方,打上断点
比如,我在一处webservice的service入口类中某一方法testAdd中加入断点

测试接口,进入断点
比如,我测试自己的WebService接口
private static String endpoint = "http://123.125.114.144:8080/JavaUtils/services/TestService?wsdl";
private static Call call = null;
@BeforeClass
public static void init(){
Service service = new Service();
try {
call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
} catch (ServiceException e) {
e.printStackTrace();
}
} @Test
public void testRemoteDebug(){
String method = "testAdd";
// 调用远程方法
try {
String value = "testValue"
Object ret = call.invoke(method,new Object[] {value);
System.out.println(ret.toString());
} catch (AxisFault e) {
System.err.println(e.getFaultString());
}
}
执行单元测试,调用服务器端WebService服务的testAdd方法,传入value值,此时eclipse进入debug状态,跳到刚才打断点的51行,这样就可以像本机一样F6,F5进行跟踪和调试远程程序了。
注意:服务器端配置的环境变量JPDA_ADDRESS虽然是端口,但是只是调试器监听端口,但是与tomcat中部署项目运行的端口是不一样的,web项目运行端口是在tomcat_home/conf/server.xml中进行配置的<Connector port="8080" ....>,不要混淆。
至此完整的eclipse远程调试步骤已经描述清楚。
总结
Standard(Socket Attach)方式进行服务器端监听的优缺点:
先启动远程java程序 然后 启动Eclipse远程调试,然后可以正常调试系统
缺点 :只有java程序启动后才能进行调试,无法调试java程序的启动过程,如果要全程调试需要使用另外一种方式,我会总结成另一篇文章
优点 :可以随时连接到远程java程序进行调试
PS:这种调试方式最常用的
本文转自:http://javacrazyer.iteye.com/blog/1757429
Eclipse远程调试(远程服务器端监听)的更多相关文章
- Eclipse插件开发中的选择监听机制(Selection Provider-Listener)
Eclipse插件开发中的选择监听机制(Selection Provider-Listener) 监听机制是eclipse插件开发或rcp应用开发中经常使用的技术,比方点击TableViewer或Tr ...
- 使用net Manager工具远程连接Oracle配置监听
一.在服务端配置Oracle端口 win + R 输入netca 弹出如下窗口后 选择监听程序配置,点击下一步: 二.配置端口号后使用Telnet工具调试端口是否连通 在命令行输入telnet 服务器 ...
- 转载:oracle11G 已开启监听,但远程连接依旧无监听解决过程
1.连接数据库显示无监听程序,首先查看服务器的oracle监听服务是否开启,服务名称:OracleOraDb11g_home1TNSListener(具体环境中可能不完全一样,但是认准TNSListe ...
- oracle11G 已开启监听,但远程连接依旧无监听解决过程
1.连接数据库显示无监听程序,首先查看服务器的oracle监听服务是否开启,服务名称:OracleOraDb11g_home1TNSListener(具体环境中可能不完全一样,但是认准TNSListe ...
- 利用 jrebel 热部署\远程调试\远程热部署 springboot项目 服务器上的代码
首先要在eclipse 中启用 启用以后在 resource 中生成了 rebel-remote.xml 然后build,把生成的jar包放到服务器上. 然后用下面的命令启动 java -agentp ...
- 【Oracle】服务器端监听配置
一.静态监听 创建端口为1521的监听,静态注册,本机ip:192.168.10.2 [oracle@localhost ~]$ vi /u01/app/oracle/product/11.2.0/d ...
- 利用 Eclipse IDE 的强大功能远程调试 Java 应用程序
II. Eclipse 连接套接字模式下的 VM 调用示例(具体引用实践) 说明:不管采用哪种方式,调试的源代码都在eclipse的环境下 一.调试方式一(将目标应用程序作为调试的服务器,eclips ...
- 使用 Eclipse 远程调试 Java 应用程序
Eclipse 中的远程调试特性 Eclipse 是一个图形化 Java 调试器前端.JDI 在 org.eclipse.jdt.debug 包中实现.本文不详细讨论 JDI 实现.参见 参考资料 获 ...
- Eclipse快速入门:远程调试Java应用
Eclipse快速入门:远程调试Java应用 2012年03月27日00:00 it168网站原创 作者:皮丽华 编辑:皮丽华 我要评论(0) 标签: Eclipse , Java , Java框架, ...
随机推荐
- 【Hibernate】Hibernate系列2之Session详解
Session详解 2.1.概述-一级缓存 2.2.操作session缓存方法 2.3.数据库隔离级别 2.4.持久化状态 2.5.状态转换 2.6.存储过程与触发器
- CSS用Id选择器在本页写样式
<title>静夜思</title><style type="text/css">#red{color:#ff0000; font-weight ...
- MongoDB副本集学习(一):概述和环境搭建
MongoDB副本集概述 以下图片摘自MongoDB官方文档:http://docs.mongodb.org/manual/core/replication-introduction/ Primary ...
- 纯css3 加载loading动画特效
最近项目中要实现当页面还没有加载完给用户提示正在加载的loading,本来是想做个图片提示的,但是图片如果放大电脑的分辨率就会感觉到很虚,体验效果很不好.于是就采用css3+js实现这个loading ...
- Xshell 中文乱码
Xshell对于嵌入式开发来说,是个非常不错的工具.但或许都有过被中文显示为乱码的问题感觉有点不爽.解决方法其实很简单的,即把xshell编码方式改成UTF-8即可. [文件]–>[打开]–&g ...
- PHP数组的使用方法小结
数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体.数组的每个实体都包含两项:键和值. 一.什么是数组数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体.数组的每个实体 ...
- OAuth2 通用组件源码下载(支持新浪微博、QQ、淘宝)(转载)
转载地址:http://www.cyqdata.com/download/article-detail-54302 OAuth2 社区通用组件说明: 源码为C#(.NET)写成,目前支持新浪微博. ...
- etc/profile和/etc/environment的比较
转自:http://andy136566.iteye.com/blog/1025338 先将export LANG=zh_CN加入/etc/profile ,退出系统重新登录,登录提示显示英文.将/e ...
- Android项目环境搭建
安装步骤: ① 安装JDK1.6 在Windows上配置Java环境变量 # JAVA_HOME(C:\Program Files\Java\jdk1.6.0_06),Path(C:\Prog ...
- Html的一点点收获
结束了牛腩,总结了自己的收获,我开始了征战HTML的计划,在看<提高班培养计划>的时候,我很诧异,因为<HTML孙鑫>这个项目竟然就只有一天的时间,怎么可以这样,但是,我还是决 ...