-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8008
//远程调试端口 不能与其他端口相同
很多时候我们调试程序工作都在开发环境上进行的,借助集成开发环境(IDE)双击就可以完成打断点。
如果遇到如下情况
1、现场生产环境
2、提交测试的环境
3、linux下的环境
4、生成环境代码写得不完善,异常被吞了,但又想知道被吞的异常
等等,这些环境出了问题,需要排查进行调试的时候,常规的调试方式可能有点显得遥不可及。
下面介绍java的远程调试,分为三部分
1、Jdb调试命令:jdb是jdk自带的工具,在bin目录下可以找到。
2、MyEclipse远程调试:只要MyEclipse和程序所在的机器能相互ping通,可以选择这种方式,可视化方便快捷。
3、自定义开发调试器:这部分不重点讲解,附件提供java调试体系文档,有兴趣可以研究一下,目前我知道的一般在大规模并发程序情况下,需要调式才有可能进行调试器自定义的开发,在没有必要的情况下,切勿重复干活。但不代表去了解这些东西没有用,java调试体系的机制,结构,思想也是前辈们智慧的结晶,有很多也是值得学习的地方,有些地方挺利索的,这些东西有时候是可以应用到项目程序设计中来,知山知水也是一种积累。
上面这两个按钮可能大家天天都在用,你可曾想过他们是如何做到的呢,其实七星瓢虫的按钮只是在jvm启动参数加了调试模式的参数,三角形按钮正常启动,可以使用jconsole之类的看看启动参数。
第一步:加入JVM远程调试参数,让JVM在debug模式下工作,加入的位置和配置最大最小内存位置一样
最少参数如下,调试端口8008
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8008
如下图,加完参数后可以启动服务了,可能会有端口冲突,,启动时候看一下有没有报错服务端的设置就完成了
使用jdb调试
Jdb –connect com.sun.jdi.SocketAttach:hostname=172.16.13.100,port=8008 -sourcepath H:\eptpworkplace\EPCore\src
sourcepath 源码所在的文件夹,可以不指定,打断点有显示所有变量,再查看变量即可到达调式的目的
连接上后,help可以查看可以使用哪些命令和用法
打断点,比如在com.thunisoft.transferplatform.receive.ReceiveThreadRunnable 71行打断点,命令如下
stop at com.thunisoft.transferplatform.receive.ReceiveThreadRunnable:71
MyEclipse远程调试
创建远程调用程序
连接上后
打断点调试,所选的项目不一定能运行,需要调试哪个文件有哪个文件就行,可以不是工程的全部源文件
网友评论