tomcat如何正确的开启远程调试功能(转)
转自:http://blog.csdn.net/mhmyqn/article/details/49209541
版权声明:本文为博主原创文章,未经博主允许不得转载。
在日常开发中,有时需要对远程服务器上的应用进行远程调试,对于tomcat,要进行远程调试其实很简单,只需要在启动tomcat时开启jpda服务即可。
什么是JPDA呢?
JPDA(JavaPlatform Debugger Architecture) 是 Java 平台调试体系结构的缩写,通过 JPDA 提供的 API,开发人员可以方便灵活的搭建 Java 调试应用程序。JPDA 主要由三个部分组成:Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP),以及 Java 调试接口(JDI)。而像Eclipse和IDEA这种开发工具提供的图形界面的调试工具,其实就是实现了JDI。关于JPDA的详细信息,可以查看developerWorks上的系列文章——深入Java调试体系
tomcat使用如下方式进行启动jpda:
- ./catalina.sh jpda start
默认情况下,远程调试的默认端口为8000,可以通过JPDA_ADDRESS进行配置,指定自定义的端口,另外,还有两个可以配置的参数
- JPDA_TRANSPORT:即调试器和虚拟机之间数据的传输方式,默认值是dt_socket
- JPDA_SUSPEND:即JVM启动后是否立即挂起,默认是n
可以在catalina.sh中进行配置:
- JPDA_TRANSPORT=dt_socket
- JPDA_ADDRESS=5005
- JPAD_SUSPEND=n
或者通过JPDA_OPTS进行配置:
- JPDA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005’
这样启动之后 ,就可以通过Eclise或IDEA进行远程调试了,IDEA具体如何进行远程调试,请参考另一篇文章。
网上有很多文章提供了另一种开启远程调试功能的方式,即通过JAVA_OPTS指定相应的JPDA参数:
- JAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005”
使用这种方式开启远程调试功能,在启动时没有什么问题,也能够正常的进行远程调试,但是在停止tomcat时:
- ./catalina.sh stop
会出现如下错误:
- ERROR: transport error 202: bind failed: Address already in use
- ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
- JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:750]
- FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
导致不能正常终止java进程,需要手动的kill掉,所以还是应该使用前面的方式开启远程调试功能。
tomcat如何正确的开启远程调试功能(转)的更多相关文章
- tomcat如何正确的开启远程调试功能
在日常开发中,有时需要对远程服务器上的应用进行远程调试,对于tomcat,要进行远程调试其实很简单,只需要在启动tomcat时开启jpda服务即可. 什么是JPDA呢? JPDA(JavaPlatfo ...
- 开启flume的远程调试功能
各种组件,比如tomcat.storm.flume,我们都可以通过JMX方式开启远程调试,主要可以用来跟踪源码,了解程序内部的运行机制,其次,也有利于你修改源码. 首先,本质上是要修改flume本身启 ...
- tomcat开启远程调试
tomcat开启远程调试模式: 需要在启动脚本中的 JAVA_OPTS='-server -Xms1024m -Xmx1024m -Xmn384m -Xss256k -XX:PermSize=128m ...
- Java项目开启远程调试(tomcat、springboot)
当我们运行一个项目的时候,一般都是在本地进行debug.但是如果是一个分布式的微服务,这时候我们选择远程debug是我们开发的利器. 环境apache-tomcat-8.5.16 Linux 如何启用 ...
- [转] 在安卓设备上使用 Chrome 远程调试功能
你的网页内容在移动设备上的体验可能和电脑上完全不同.Chrome DevTools 提供了远程调试功能,这让你可以在安卓设备上实时调试开发的内容. 安卓远程调试支持: 在浏览器选项卡中调试网站. 在原 ...
- [转载]eclipse的远程调试功能配置
原文地址:eclipse的远程调试功能配置作者:我的 用途:web应用部署并运行于外部(区别于eclipse环境中启动的)应用服务器中,当出现问题时,可以使用eclipse工程的源代码进行跟踪调试. ...
- 【Java】使用Eclipse进行远程调试,Windows下开启远程调试
原博链接:http://blog.csdn.net/sunyujia/article/details/2614614 今天决定做件有意义的事,写篇图文并茂的blog,为什么要图文并茂?因为很多事可 ...
- springboot开启远程调试
远程调试maven设置 The run goal forks a process for the boot application. It is possible to specify jvm arg ...
- 惊呆了!Spring Boot 还能开启远程调试?
持续原创输出,点击上方蓝字关注我 目录 前言 什么是远程调试? 为什么要远程调试? 什么是JPDA? 如何开启调试? transport server suspend address onthrow ...
随机推荐
- 再谈lmbench
摸了一轮ltp-ddt 再回头来看lmbench bandwidth & latency合集小王子 用起来确实方便. 只是官网显示的用法是: Go to the top directory, ...
- windows java jdk安装
安装 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 勾选协议,选择 ...
- 08.@Scheduled定时任务、整合jdbcTemplate、mybatis区分多数据源
@Scheduled注解执行定时任务 import org.springframework.scheduling.annotation.Scheduled; import org.springfram ...
- java基础复习(三)
一.运算符 1.算术运算符 1) 加法(+) 加法 正号 字符串拼接 2) 减法(-) 减法 负号 3) 乘法 (*) 乘法 4) 除法(/) 除法 整数(小数)相除的例子 10/3 =3: ...
- Linux中的uniq命令(去掉重复项,输出重复项)
ls /bin /usr/bin | sort | uniq | less 上面这条命令的实际效果是: 获得 ls /bin /usr/bin 的 output 将上述 output 进行 sort ...
- NetCore中的环境变量的值取自于哪里?
环境 操作系统 win10 IIS 10 net core 2.2 ,net core 3.0 分别生成了三个环境变量的配置文件: 以及测试代码: public void Configure(IApp ...
- html 的一些基础操作
花了一天学了点html语言..不记下来的话又白学了 基础中的基础格式 <!DOCTYPE html> <html> <head> <!-- 字符集的选择 ut ...
- Python构造器及析构器:__init__与__new__及__del__
__init__与__new__这两个魔法方法组成了Python类对象的构造器,在Python类实例化时,其实最先调用的不是__init__而是__new__.__new__是负责实例化对象的,而__ ...
- tom
题目描述 众所周知,Tom 猫对香肠非常感兴趣.有一天,Tom 家里的女主人赏给了Tom 一大堆香肠.这些香肠太多了,以至于Tom 一顿吃不完,于是它把这些香肠串成了一棵树,树的每个节点上都有一个香肠 ...
- 经典JS 判断上传文件大小和JS即时同步电脑时间
我也是新手,还是一个JS笨,有一些网站要实现的功能要自己写么? 答案是不会,去问同事大佬吧,闲简单.就在晚上看了一些其他大佬们写的JS效果, 代码很少.占用网站CPU也小的多.可以一用, 废话少扯.代 ...