今天遇到了一个问题:同样的代码,在服务器上跑的时候会报空指针异常,但是在本地是没有问题的,看服务器上打印的日志只能看到异常信息,不能准确地定位到出问题的代码,于是就搜索了一下远程调试。结果还真的可以在eclipse中对服务器上的代码进行远程调试

有一个叫做JDWP的协议,支持对java虚拟机进行远程调试

JDWP的全称是Java Debug Wire Protocol,它定义了调试器(debugger)和被调试的 Java 虚拟机(target vm)之间的通信协议。其核心API已经包含在JDK中。

使用的方法是在JVM的启动参数上加上如下的东西:-Xdebug -server -Xrunjdwp:transport=dt_socket,server=y,address=8899 (其中的8899是我自己定义的端口号,可以根据需要改成其他的端口号)

在eclipse中的设置:点击 run-->Debug Configurations  在左边的 Remote Java Application 选项中右键点击,选择 NEW(如下图所示)

在project中选择待调试的项目,Host中填上服务器的IP地址,Port中是我们在服务器上配置的JVM启动参数里的端口号

启动服务器上的项目,服务器会等待调试器进行连接(此时项目是在等待状态,并没有启动),此时在eclipse中(图片中的位置)点击Debug按钮,服务器上的项目开始启动,这样就可以在Eclipse中进行远程调试了

在intellij IDEA中也支持类似的用法,服务器端的配置不变,在intellij IDEA的  debug configuration中添加一个 remote类型的configuration,然后填入服务器的地址和端口号就可以了,如下图所示:

更详细的信息可以参考IBM developWorks上的这篇文章: http://www.ibm.com/developerworks/cn/opensource/os-eclipse-javadebug/

2017年1月21日增加:

如果要debug运行在服务器的tomcat上的程序,需要把相关的参数添加到tomcat的启动的参数里边,然后保证源代码在IDE里边,请求服务器上的tomcat,如果在本地的IDE里边设置的有断点的话就会进去。

如果是linux上的tomcat:

startup.sh 中的最后一行 exec "$PRGDIR"/"$EXEXUTABLE" start "$@"中的start修改成
jpda start ,默认的调试端口是8000 ,可以在catalina.sh 文件中设置JPDA_APPDESS=8000
使用startup.sh 或者catalina.sh jpda start 启动tomcat

使用Eclipse(以及intellij IDEA)配合JDWP对服务器上部署的代码进行调试的更多相关文章

  1. eclipse生成的web项目在resin服务器上的发布(不能解析web.xml)

    首先报错误: web项目web.xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <web-ap ...

  2. Idea_从Eclipse转Intellij IDEA

    场景:使用Intellij IDEA感觉还是不是很顺手,想放弃又舍不得它,如:强大的代码提示功能. 本人使用IntelliJ IDEA其实并不太久,用了这段时间以后,觉得的确很是好用.刚刚从Eclip ...

  3. Eclipse和intellij idea 快捷键对比

    Eclipse和intellij idea 快捷键对比

  4. Mac之OS系统下搭建JavaEE环境 <三> 之Eclipse 与 IntelliJ IDEA 的安装配置

    三.Eclipse 与 IntelliJ IDEA 的安装配置 1.Eclipse的安装配置 1 下载eclipse 到官网 https://www.eclipse.org/downloads/ecl ...

  5. Maven依赖中的scope详解,在eclipse里面用maven install可以编程成功,到服务器上用命令执行报VM crash错误

    Maven依赖中的scope详解 项目中用了<scope>test</scope>在eclipse里面用maven install可以编译成功,到服务器上用命令执行报VM cr ...

  6. 理解 IntelliJ IDEA 的项目配置和Web部署(转载)

    理解 IntelliJ IDEA 的项目配置和Web部署   1.项目配置的理解 IDEA 中最重要的各种设置项,就是这个 Project Structre 了,关乎你的项目运行,缺胳膊少腿都不行.最 ...

  7. Windows 8.0上Eclipse 4.4.0 配置CentOS 6.5 上的Hadoop2.2.0开发环境

    原文地址:http://www.linuxidc.com/Linux/2014-11/109200.htm 图文详解Windows 8.0上Eclipse 4.4.0 配置CentOS 6.5 上的H ...

  8. 详细的图文教程来实现 eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上

    很多初学,尤其自学JavaWeb的朋友首次在eclipse下配置tomcat时,总会有种难下手的感觉,在此,通过图文解说的方法,最直观的向大家演示一遍该配置过程. 第一部分:eclipse环境下如何配 ...

  9. 关于同步VSS服务器上的代码发生Eclipse里面的项目全部不见了

    有次在同步VSS服务器上的代码的时候突然发生了错误(同步的代码的项目竟然消失了)....如下图 Could not open the editor: The file does not exist. ...

随机推荐

  1. [转]Eclipse下导入外部jar包的3种方式

    我们在用Eclipse开发程序的时候,经常要用到第三方jar包.引入jar包不是一个小问题,由于jar包位置不清楚,而浪费时间.下面配图说明3种Eclipse引入jar包的方式.   1.最常用的普通 ...

  2. Android中使用SoundPool来播放音频

    今天找素材重做FlappyBird时学习了一下怎样为应用设置背景音频,发现通过封装SoundPool类就能够非常好的做到这一点. SoundPool类比較适合播放一些类似游戏音效这样的比較短促并且较小 ...

  3. 树形结构 DropDownList

    前台 <asp:DropDownList ID="ddlOutType" runat="server" /> 后台代码: 先绑定第一级 string ...

  4. 错误将UIViewController当做UITableViewController来用

  5. R语言进阶之4:数据整形(reshape)

    一.通过重新构建数据进行整形 数据整形最直接的思路就把数据全部向量化,然后按要求用向量构建其他类型的数据.这样是不是会产生大量的中间变量.占用大量内存?没错.R语言的任何函数(包括赋值)操作都会有同样 ...

  6. sparkR 跑通的函数

    spark1.4.0的sparkR的思路:用spark从大数据集中抽取小数据(sparkR的DataFrame),然后到R里分析(DataFrame). 这两个DataFrame是不同的,前者是分布式 ...

  7. 怎么快速了解自己的MySQL服务器?

    From: http://www.cnblogs.com/benshan/archive/2013/01/09/2853097.html 1.查看数据库服务器状态:status Linux 下的MyS ...

  8. CentOS 6.5配置SSH免密码登录

    centos 系统对权限的设置非常微妙,如果权限设置大了则ssh 拒绝,如果权限小了,则ssh 更是被拒绝(我曾经配置好久没有打通,就是因为权限过大的原因) 参考链接:http://www.linux ...

  9. spark on yarn(zookeeper 配置)

    http://database.51cto.com/art/201404/435630.htm

  10. Linux下的CPU性能瓶颈分析案例

    问题描述: 在对notify执行性能测试时发现cpu负载突然飙高,cpu利用率高达95%.这时候就要排查是哪些线程消耗了cpu,并从代码层找到占用cpu的“罪魁祸首”. 步骤: 1. 先用ps+gre ...