使用Eclipse(以及intellij IDEA)配合JDWP对服务器上部署的代码进行调试
今天遇到了一个问题:同样的代码,在服务器上跑的时候会报空指针异常,但是在本地是没有问题的,看服务器上打印的日志只能看到异常信息,不能准确地定位到出问题的代码,于是就搜索了一下远程调试。结果还真的可以在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对服务器上部署的代码进行调试的更多相关文章
- eclipse生成的web项目在resin服务器上的发布(不能解析web.xml)
首先报错误: web项目web.xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <web-ap ...
- Idea_从Eclipse转Intellij IDEA
场景:使用Intellij IDEA感觉还是不是很顺手,想放弃又舍不得它,如:强大的代码提示功能. 本人使用IntelliJ IDEA其实并不太久,用了这段时间以后,觉得的确很是好用.刚刚从Eclip ...
- Eclipse和intellij idea 快捷键对比
Eclipse和intellij idea 快捷键对比
- Mac之OS系统下搭建JavaEE环境 <三> 之Eclipse 与 IntelliJ IDEA 的安装配置
三.Eclipse 与 IntelliJ IDEA 的安装配置 1.Eclipse的安装配置 1 下载eclipse 到官网 https://www.eclipse.org/downloads/ecl ...
- Maven依赖中的scope详解,在eclipse里面用maven install可以编程成功,到服务器上用命令执行报VM crash错误
Maven依赖中的scope详解 项目中用了<scope>test</scope>在eclipse里面用maven install可以编译成功,到服务器上用命令执行报VM cr ...
- 理解 IntelliJ IDEA 的项目配置和Web部署(转载)
理解 IntelliJ IDEA 的项目配置和Web部署 1.项目配置的理解 IDEA 中最重要的各种设置项,就是这个 Project Structre 了,关乎你的项目运行,缺胳膊少腿都不行.最 ...
- 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 ...
- 详细的图文教程来实现 eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上
很多初学,尤其自学JavaWeb的朋友首次在eclipse下配置tomcat时,总会有种难下手的感觉,在此,通过图文解说的方法,最直观的向大家演示一遍该配置过程. 第一部分:eclipse环境下如何配 ...
- 关于同步VSS服务器上的代码发生Eclipse里面的项目全部不见了
有次在同步VSS服务器上的代码的时候突然发生了错误(同步的代码的项目竟然消失了)....如下图 Could not open the editor: The file does not exist. ...
随机推荐
- 【C】——压缩字符串
编一个函数,输入一个字符串,要求做一个新字符串,把其中所有的一个或多个连续的空白字符都压缩为一个空格.这里所说的空白包括空格.'\t'.'\n'.'\r'.例如原来的字符串是: This Conten ...
- WCF客户端获取服务器返回数据报错
错误信息:An error occurred while receiving the HTTP response to http://127.0.0.1/SIHIS/Infection/PubExec ...
- Golang map 如何进行删除操作?
Cyeam 关注 2017.11.02 10:02* 字数 372 阅读 2784评论 0喜欢 3 map 的删除操作 Golang 内置了哈希表,总体上是使用哈希链表实现的,如果出现哈希冲突,就把冲 ...
- 周末大礼:jQuery技巧总结
一.简介 1.1.概述 随着WEB2.0及ajax思想在互联网上的快速发展传播,陆续出现了一些优秀的Js框架,其中比较著名的有Prototype.YUI.jQuery.mootools.Bindows ...
- html5 websocket + node.js 实现网页聊天室
1 client: socket.io server: node.js + express + socket.io 一个简单的聊天室 demo,没有注册,内置了一些测试用户 2 cli ...
- Namenode HA原理详解
社区hadoop2.2.0 release版本开始支持NameNode的HA,本文将详细描述NameNode HA内部的设计与实现. 为什么要Namenode HA? 1. NameNode High ...
- 关于Cocos2d-x中打包图集和使用方法
准备的过程 1.打开TextruePacker软件 2.把游戏中要使用的图片拖到TextruePacker里面,TextruePacker会自动帮我们排序,让所有小图变成一个大图 3.点击Publis ...
- TensorFlow基础笔记(0) tensorflow的基本数据类型操作
import numpy as np import tensorflow as tf #build a graph print("build a graph") #生产变量tens ...
- 【转】C#获取电脑客户端IP地址及当前用户名
在C#中获取一台电脑名,IP地址及当前用户名是非常简单,以下是我常用的几种方法: 1. 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户信息: ...
- C++ 类 & 对象
C++ 类 & 对象C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计.类是 C++ 的核心特性,通常被称为用户定义的类型. 类用于指定对象的形式,它包含了数据表示法 ...