Java远程Debug

java远程调试功能可导致远程执行任意命令,默认情况下在生产禁止使用。如有需要在beta/dev环境使用,必须监听在127.0.0.1,避免被远程调用。

监听到127.0.0.1的方法
修改java 远程调试参数中的地址为127.0.0.1,重启java程序。
由于开启java debug服务有两种方式,启动时的参数参考以下其中一种。

java debug启动时开启远程调试参数
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=127.0.0.1:<port>
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=127.0.0.1:<port>
注: tomcat的启动参数在startenv.sh里面修改。

远程调试的方法
在启用了java debug的机器上使用socat命令进行端口映射,使用映射的端口进行远程调试,在调试完后需结束socat命令。
命令如下,其中listen_port是socat监听的端口,dest_port是java debug监听的端口, source_ip是调试的客户机的ip。

socat命令
socat TCP4-LISTEN:<listen_port>,fork,range=<source_ip>/32 TCP4:127.0.0.1:<dest_port>
若机器上没有socat程序,使用以下命令安装socat

sudo yum install socat
例子
服务器的ip地址为192.168.254.219, 本机的ip地址为10.86.14.35,且服务器的java debug服务监听到127.0.0.1:50002端口。此时我想用本机连接服务器进行远程调试,需:
1、登陆服务器使用socat进行端口映射,
socat TCP4-LISTEN:50001,fork,range=10.86.14.35/32 TCP4:127.0.0.1:50002
2、在idea中设置远程调试的Host ip为192.168.254.219, 端口为50001

参考:

安全的Java远程Debug

原文地址:https://www.cnblogs.com/winner-0715/p/8407190.html

时间: 2024-10-11 07:33:36

Java远程Debug的相关文章

远程debug调试java代码

远程debug调试java代码 日常环境和预发环境遇到问题时,可以用远程调试的方法本地打断点,在本地调试.生产环境由于网络隔离和系统稳定性考虑,不能进行远程代码调试. 整体过程是通过修改远程服务JAVA_OPTS参数,然后本地通过Eclipse或IDEA等工具调试. 下面简单介绍下理论. 理论 JPDA(Java Platform Debugger Architecture)是Java平台调试体系结构的缩写.由3个规范组成,分别是JVMTI(JVM Tool Interface),JDWP(Ja

java项目 远程debug

AVA项目无法像PHP那样可以随时修改文件内容进行调试,调试可以借助eclipse,本地代码的话很容易在本地debug,但如果代码已经打包部署在linux上呢?可以进行远程debug 很简单,只需要在java应用启动脚本中加入“-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y” 远程debug的端口就是8000了的 再借助于eclipse 然后debug该应用就可以了的 前置条件:本地的代码需要和远程服务器一致

Java:远程Debug

Java远程调试 -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,address=5005,suspend=n 说明 : -XDebug               启用调试.-Xnoagent             禁用默认sun.tools.debug调试器.如果禁用了agent,便不能采用Attach方式来远程连接调试了,所以这个选项一般不怎么用.-Djava.compiler=N

JAVA类项目如何开启远程DEBUG模式?TOMCAT,JETTY等容器启动也可以DEBUG,以及JAVA远程连接JMXREMOTE

-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n 上面这一行是用来启动远程DEBUG的,端口为8000,suspend表示容器在启动的时候是否debug,可以看到tomcat或jetty启动的内部过程  -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -D

Java Remote Debug(idea远程调试)

概述 对于分布式系统的调试不知道大家有什么好的方法.对于我来说,在知道远程调试这个方法之前就是在代码中打各种log,然后重新部署,上线,调试,这样比较费时.今天咱们来了解了解Java远程调试这个牛逼的功能,本文以Intellij IDEA为例讲解怎么使用远程调试.以Thrift入门教程这篇文章中使用的程序作为例子.这个程序由Thrift服务端和客户端组成.描述一下远程调试需要解决的问题: 服务端程序运行在一台远程服务器上,我们可以在本地服务端的代码(前提是本地的代码必须和远程服务器运行的代码一致

使用IDEA进行JAVA代码的远程Debug

在本地开发过程中,对代码进行Debug能逐行对代码逻辑进行调试,方便准备的排查问题.但是当代码发布到线上时,如果运行过程中出现异常,仅仅依靠日志来排查问题的话,会比较耗时,而且经常由于日志不全等原因而不能快速准确定位问题,而通过对JAVA代码进行远程Debug能很好的解决这个问题.这篇博文主要介绍在IDEA中配置JAVA代码远程Debug,以及需要注意的事项. 我们知道,Java 程序是统一以字节码的形式运行在Java 虚拟机上的,因为都是字节码文件,所以只要本地代码和远程服务器上的类文件相同,

java war包 远程debug出现的问题解决,学会查看日志

开启远程debug之后,8005 关闭tomcat 又启动不了了.. netstat -lnp 未发现8005接口 eclipse 内远程链接到服务器,debug 下发现服务器线程启动也存在问题.很多线程未启动 一段时间后又发现启动正常了,看来只有8005端口收到影响,但是这服务器启动的不太流畅 咋整只能通过日志文件查看了 进入tomcat目录 主要下边的两个文件 启动用时143秒,挺长的, 没有很明显的报错信息.... 28-Sep-2019 12:25:26.884 INFO [localh

远程debug Tomcat工程

1.登陆环境,修改环境中tomcat中的配置文件,主要修改tomcat下bin文件夹中的catalina.sh和startup.sh 步骤(1): catalina.sh文件修改: 在该文件的第一行添加如下内容: JPDA_ADDRESS=15888 15888为端口号 步骤(2): startup.sh文件修改: 在该文件中最后一行修改如下内容: exec "$PRGDIR"/"$EXECUTABLE" jpda start "[email protec

eclipse远程debug

由于一般比较正规项目,都会有好几个版本,有时候在测试版本的时候,一切都好好的,然后提交到其他版本之后会有各种各样的问题,这个时候如果不能快速准确的定位到问题,那么我们就需要用 eclipse远程debug 调试跟踪一下了; PS:本来以为这是个很差用的操作呢,问了周围的几个同事,发现没几个人会,然后自己记录下来以备后用吧 1.查看IP服务器IP , linux 命令:  ifconfig  ,例如IP为: 192.168.10.10 2.进入到服务器Tomcat的bin目录 ,例如 : cd /