如何实现远程eclipse 调试java代码码

eclipse远程debug调试服务器端java程序_博客_coding云
eclipse远程debug调试服务器端java程序
8167次阅读 |
最近,有个同学被杭州的阿里招走了,各种待遇那个好啊,艳羡旁人呐。而且开发环境也特别高档,他也给我介绍了不少高级技术方面的东东。其中有个我挺感兴趣,就是今天要介绍给大家的eclipse远程debug调试服务器端java web程序。这个具体作用我就不提了,一般都是线上查bug用到,其他用途看情况了。
这个远程debug其实并不复杂,只需要一些简单配置就可以搞定,但是仍然费了我不少时间才弄好,主要还是自己太菜了导致的。
长话短叙,来看看准备工作。
一、配置服务器端的tomcat(公司是ubuntu环境)
进入tomcat目录,找到bin目录下的catalina.sh,然后修改配置文件如下:
在这句上面添加以下代码:# OS specific support.
$var _must_ be set to either true or false.
jack set start
CATALINA_HOME=/alidata/server/tomcat7
JAVA_HOME=/usr/java/java7
JAVA_OPTS="-Xms512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=2424,server=y,suspend=n"
# jack set end
# OS specific support.
$var _must_ be set to either true or false.
CATALINA_OPTS这句即为开启远程调试debug的配置信息。其中2424就是你远程服务器的调用接口。
注:我在这里就遇到自己挖的坑了,我安装tomcat的时候,配置了service tomcat start这样的启动命令服务,参考我写过的
如下图所示
所以第一步要修改的不是tomcat/bin目录下的catalina.sh,而是/etc/init.d/tomcat这个文件
二、重启服务器上的tomcat
三、eclipse打开debug
1. 点击下图红色按钮
2. 双击下图红色区域 Remote Java Application按钮
3. 填写配置如下:
这时,点击上图右下角的debug按钮后,就可以远程调试服务器程序了。
遇到的其他问题:
如果发现不能调试,总是报错的话,可以尝试重启eclipse,因为我就遇到这样的问题了!!!
好了,今天这篇就介绍到这里,希望能够帮助大家。
(转载本站原创文章请注明作者与出处)
这篇文章帮我解决问题了,我忍不住的想点赞!!!
同时也想小小的打赏一笔表示感谢。
已经有29位老爷赞赏了本文
打赏方式一:
打开支付宝,使用“扫一扫”打赏。
打赏方式二:
打开微信,使用“扫一扫”打赏。
点击查看详情以下谈论的是Applet的远程调试技术,实际上对于其他java程序一样适用,只需要使用文中参数启动java程序即可
启用调试。 -Xnoagent
禁用默认sun.tools.debug调试器。 -Djava.compiler=NONE
禁止 JIT 编译器的加载。 -Xrunjdwp
加载JDWP的JPDA参考执行实例。 transport
用于在调试程序和 VM 使用的进程之间通讯。 dt_socket
套接字传输。 dt_shmem
共享内存传输,仅限于 Windows。 server=y/n
VM 是否需要作为调试服务器执行。 address=3999
调试服务器的端口号,客户端用来连接服务器的端口号。 suspend=y/n
是否在调试客户端建立连接之后启动 VM 。
Java远程调试方式,两种方式进行远程调试
上面的表示是Eclipse配置为Socket Listen方式,下面的是Socket Attach方式
对于远程程序上图表示主动链接调试器,下图表示远程程序正常运行 允许调试器连接jvm
Eclipse配置: 菜单(Eclipse):Run--&Debug Configurations打开调试配置面板,如图配置
左侧新建一个远程调试
左侧Project:源代码工程
左侧Connection Type:调试方式
左 侧Connection Properties:配置与Connection Type相关的调试连接属性
Standard(Socket Attach)方式调试:
左侧Connection Type:Standard(Socket Attach)
左侧Connection Properties:
host:192.168.228.7 (远程java主机ip)
Port: 9998 (远程java配置的调试端口)
Console代码
远程java程序配置
/prog/java/jdk/bin/jcontrol
#window系统在(控制面板-&其他程序-&java)打开"Java Control Panel"配置对话框
#在打开远程java主机的"Java Control Panel"配置对话框 进行配置
#-Xdebug -Xrunjdwp:transport=dt_socket,address=9998,server=y,suspend=n
远程java程序配置
/prog/java/jdk/bin/jcontrol
#window系统在(控制面板-&其他程序-&java)打开"Java Control Panel"配置对话框
#在打开远程java主机的"Java Control Panel"配置对话框 进行配置
#-Xdebug -Xrunjdwp:transport=dt_socket,address=9998,server=y,suspend=n
先启动远程java程序 然后 启动Eclipse远程调试,现在可以正常调试系统了
缺点 :只有java程序启动后才能进行调试,无法调试java程序的启动过程,如果要全程调试需要使用下面的方式
优点 :可以随时连接到远程java程序进行调试,没尝试过多机同时调试一个远程java
Standard(Socket Listen)方式调试:
左侧Connection Type:Standard(Socket Listen)
左侧Connection Properties:配置Port为9999
远程java程序配置
/prog/java/jdk/bin/jcontrol
#window系统在(控制面板-&其他程序-&java)打开"Java Control Panel"配置对话框
#在打开远程java主机的"Java Control Panel"配置对话框 进行配置
#-agentlib:jdwp=transport=dt_socket,suspend=y,address=192.168.228.7:9999
#address:Eclipse程序所在的主机的IP和调试端口
/prog/java/jdk/bin/jcontrol
#window系统在(控制面板-&其他程序-&java)打开"Java Control Panel"配置对话框
#在打开远程java主机的"Java Control Panel"配置对话框 进行配置
#-agentlib:jdwp=transport=dt_socket,suspend=y,address=192.168.228.7:9999
#address:Eclipse程序所在的主机的IP和调试端口
先启动Eclipse远程调试,然后启动远程java程序 现在可以正常调试系统了
缺点 :不能随时连接到远程java程序进行调试
优点 :可以调试java程序启动过程
浏览: 461373 次
来自: 深圳
{&total&:8,&page ...
maven + jetty报错了JRebel: Failed
JRebel: Failed to start a plugi ...
很好,很强大!
请问这是哪个版本的?
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'1.4k 次阅读
标签:至少1个,最多5个
Kubernetes1.2版本最近刚发布就立马成为容器(Docker,Rocket,Hyper等等)的事实上的集群管理路径。这里是一些关于1.2版本的有趣特点:
集群现在可以扩容到30,000个容器一个集群
优雅的关闭节点,过渡到集群里运行的其他节点
自定义指定指标作为自动扩容的基础
动态配置管理
当你在本地笔记本上面开发微服务的时候,你可以使用Kubernetes来运行你的本地Docker容器,并且在你配置你的应用程序的时候,得到开发人员/QA/生产过程等相似过程。对于Java开发人员来说,有一件事肯定会发生:就是你如何看日志、做远程调试以及如何追踪协议栈。文章以下的内容是一些小提示:
为你的Pod跟踪日志
在一些集群管理系统中,你基本上不得不查找应用程序的本地IP(如果是在容器里运行的话),无论如何都要ssh到它,然后找到日志并且跟踪它。有了Kubernetes,你就不用必须做上述的任意事情了。除了你正在运行的那台机器(也就是你运行Kubernetes client的地方),你可以按照下面的来:
在你的集群里列出以下pods
现在选择你想要追踪的日志,并且运行它!
如果必须的话,通过Shell连接
如果你由于某些原因必须登陆到pod(在文件系统中试探一下,查看其它配置文件等等)
虚拟机远程调试你的应用程序
这样的话,查看你的应用程序上面发生了什么就会变得十分方便。为了做到这个,你只要做跟今天做的一样的事情就好了。当你bootstrap你的JVM,你应该有方法启动JVM调试。例如,HawtApp Maven plugin就是一个简单的mvn 插件,可以将Java Main作为可执行的、简单的、灵活的bootrtrap bin/run.sh 脚本(或者windows的批处理文件),允许你控制路径和通过环境变量调试。
令Bootstrap Java可以暴露到调试端口
通过Kubernetes密钥清单在docker容器里定义调试端口
现在你需要在你的Docker容器里面通过你的Kubernetes密钥清单(json/yaml)曝光端口 5005 (在这个例子里)
注意,我们已经添加了一个env变量到Kubernetes密钥清单文件到可以控制我们是否想要远程调试打开或者关闭(true/false)。Bootstrap脚本(以上所述)会检查env 变量,并且你可以通过kube密钥清单控制它(现在Kube1.2有了ConfigMap,或者OpenShift templates)。
最后一步是代理服务调试端口到你的本地机器。如果你在本地运行 kubectlclient,就会十分容易:
列出集群里的pods
代理pod到一个特殊端口
ceposta@postamac(~) $ kubectl port-forward file-ingress-events-3artj
上述代码会从你的本地环境(5005)端口转发到pod的端口5005。现在你可以将你的远程调试器附加到 localhost:5005。
希望这篇帖子可以帮助你调试你的Java apps!
0 收藏&&|&&0
你可能感兴趣的文章
你可能感兴趣的文章
分享到微博?
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。扫一扫体验手机阅读
远程调试spark源码(基于java的调试工具)
<span type="1" blog_id="1389528" userid='
25篇文章,4W+人气,0粉丝
大数据时代的微服务之路
¥51.00426人订阅
<span type="1" blog_id="1389528" userid='Java远程调试(Remote Debug)方法——以Eclipse为例
Java远程调试的原理是两个VM之间通过debug协议进行通信,然后以达到远程调试的目的。两者之间可以通过socket进行通信。
首先被debug程序的虚拟机在启动时要开启debug模式,启动debug监听程序。jdwp是Java Debug Wire Protocol的缩写。
在启动程序时,将以下参数选项添加到自定义的命令行中,程序就会以支持RemoteDeubg的方式启动。
wrapper.java.additional.1=-Xdebug
wrapper.java.additional.2=-Xrunjdwp:transport=dt_socket,server=y,address=7899,suspend=n
DEBUG选项参数的意思:
-XDebug 启用调试;
-Xrunjdwp 加载JDWP的JPDA参考执行实例;
transport 用于在调试程序和VM使用的进程之间通讯;
dt_socket 套接字传输;
server=y/n VM是否需要作为调试服务器执行;
address=7899 调试服务器监听的端口号;
suspend=y/n 是否在调试客户端建立连接之后启动 VM 。
程序准备好之后,再配置一下Eclipse,让它去访问远程的VM了。过程相当简单!
先在程序中打好断点,然后
Run--&Debug Configurations…--&Remote Java Application--&右键New--&填写Host和Port(例如,Host:10.75.0.103,Port:7899)--&Debug
Eclipse debug快捷键:
F5 Step into
F6 Step over
F7 Step out
F8 continue to the next breakpoint
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 eclipse 调试java代码 的文章

 

随机推荐