【Java远程debug】
转自 http://blog.csdn.net/hongchangfirst/article/details/44191925
一、远程debug原理
Java远程调试的原理是两个JVM之间通过debug协议进行通信,然后以达到远程调试的目的。两者之间可以通过socket进行通信。
被debug的机器需要开启debug模式,debug使用的客户端可以是eclipse,总之我使用eclipse已经成功了。
二、操作步骤
1.服务端设置
由于我们经常将程序部署到linux机器上,所以通常使用的是war、tar包或者直接使用可运行的jar包,由于近来spring-boot的盛行,直接使用可执行的jar包成为了最流行的部署方式:
jdk1.7之后使用命令:
java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n -jar you-runnable-jar.jar
- jdwp:是 JavaDebug Wire Protocol的缩写
- server=y表示是监听其他debugclient端的请求
- address=8000表示服务会在端口号8000监听debug请求,客户端必须设置这个端口号才能进行dubug
- suspend表示是否在调试客户端建立连接之后启动 VM。如果为y,那么当前的VM就是suspend直到有debug client连接进来才开始执行程序。如果你的程序不是服务器监听模式并且很快就执行完毕的,那么可以选择在y来阻塞它的启动。
当出现以下提示的时候表示服务端已经使用deubg模式启动:

2.客户端设置
eclipse毕竟还是我们最熟悉的IDE,所以使用它作为dubug的客户端。



3.测试
使用客户端发起一个请求,可以直接eclipse会直接进入debug模式。


【Java远程debug】的更多相关文章
- java 远程debug
在启动jar包添加如下参数16091是端口 java -Xdebug -Xrunjdwp:transport=dt_socket,address=16091,server=y,suspend=n -j ...
- 远程debug调试java代码
远程debug调试java代码 日常环境和预发环境遇到问题时,可以用远程调试的方法本地打断点,在本地调试.生产环境由于网络隔离和系统稳定性考虑,不能进行远程代码调试. 整体过程是通过修改远程服务JAV ...
- java项目 远程debug
AVA项目无法像PHP那样可以随时修改文件内容进行调试,调试可以借助eclipse,本地代码的话很容易在本地debug,但如果代码已经打包部署在linux上呢?可以进行远程debug 很简单,只需 ...
- Java高效开发-远程debug
1.前言 "这怎么回事?在本地还好好,放到服务器就不行了.这该怎么排查,日志也看不出来啥呀",日常开发中经常会出现这种问题,这时候就可以尝试idea远程debug的模式试试 2.使 ...
- java war包 远程debug出现的问题解决,学会查看日志
开启远程debug之后,8005 关闭tomcat 又启动不了了.. netstat -lnp 未发现8005接口 eclipse 内远程链接到服务器,debug 下发现服务器线程启动也存在问题.很多 ...
- IntelliJ IDEA 15.0.2远程debug tomcat
背景 在最近的java项目中使用了linux环境下编译的so文件,所以无法在window环境下debug,故此有了这篇文章 环境 jdk:jdk-8u101-linux-x64 os:CentOS r ...
- eclipse远程debug
由于一般比较正规项目,都会有好几个版本,有时候在测试版本的时候,一切都好好的,然后提交到其他版本之后会有各种各样的问题,这个时候如果不能快速准确的定位到问题,那么我们就需要用 eclipse远程deb ...
- IDEA 配置远程debug
1. 启动远程服务配置debug参数 远程服务启动时配置如下debug相关参数 java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address= ...
- 如何开启远程debug调试功能?
远程debug步骤: 1.vi /usr/local/sa/tomcat-ui/bin/catalina.sh 最顶上加export JPDA_ADDRESS=12345 2.vi /usr/loca ...
随机推荐
- decimal与double,float的选择与区别
decimal 类型可以精确地表示非常大或非常精确的小数.大至 1028(正或负)以及有效位数多达 28 位的数字可以作为 decimal类型存储而不失其精确性.该类型对于必须避免舍入错误的应用程序( ...
- python中使用heapq查看最大与最小的N个元素列表
怎么从一个集合中获取最大或最小的N个元素列表? heapq模块有两个函数:nlargest() 和 nsmallest() 可以完美解决这个问题. In [39]: import heapq In [ ...
- 逆向工程学习第一天--一个VC6编译的小程序
今天开始研究二进制了,开个文记录一下.下面是一个小程序的OD反汇编代码,自己尝试加了注释,本人逆向零基础,属于摸着石头过河的类型,有理解错误的地方,希望大牛不吝赐教. 源代码: #include< ...
- api接口类型
类型一:js+xml 类型二:纯php模式 参考: <?php $ip = '117.25.13.123'; $datatype = 'text'; $url = 'http://api.ip1 ...
- JS 循环给li绑定参数不同的点击事
以下内容纯属个人理解,不正确的地方还请大神留言,不胜感激! 源代码:(按个人方式选用一种即可) <ul> <li>1</li> <li>2</li ...
- 237. Delete Node in a Linked List
在链接列表中删除节点. 编写一个函数来删除单链表中的一个节点(除了尾部),只提供对该节点的访问..假设链表是1 - > 2 - > 3 > 4,并给出了具有值为3的节点, 链表应该成 ...
- 开源项目GitHub
GitHub 手把手教你如何加入到github的开源世界! http://www.open-open.com/lib/view/open1396580186465.html 如何在 Github 上发 ...
- showPrompt弹框提示
工作中会有很多的弹框,用来添加模板,用来信息提示,,我现在用的模板有dialog(用来添加数据模板内容),还有一个就是自写的showPrompt用来判断错误或者正确的信息~~ 样子大概就是这样的,, ...
- MySQL的简单使用
MySQL 参数 参数 描述 备注 -D,--database=.name 打开指定数据库 mysql –uroot –procky –Dhisdb 或者mysql –uroot –prock ...
- ASP.NET 验证码控件
public class ValidateCode : WebControl { /// <summary> /// 默认构造函数,暴露的属性接口 /// </summary> ...