问题描述:
同事的代码跑的起来,但是我的代码跑不起来,代码都是同一个git仓库里的最新版本,依赖也是同一个maven仓库,这是什么原因?
定位问题可能在某个包有问题。因为代码是一样的。就可能是包不一样,同事可能替换了某个包。也有可能是我本地环境的问题,我是用的IDEA,而同事用的是STS。
我让同事打个包给我,我想对比一下里边依赖的jar包的大小。没成想根本没法子对比,依赖实在太多了,看的眼睛都快花了。
我直接 java -jar 运行了同事打的jar包。运行没有问题,很顺利的跳过我报错的地方,然后成功启动。我突然想到,如果可以在我报错的那个地方打个断点,看看同事的这边为啥不报错,不就可以知道问题所在了吗。百度了一下,发现IDEA是可以远程调试的。我查了几个教程,就开始上手试试了。
配置
配置并不复杂,总结起来大致有以下几个步骤:
1、启动jar 包,同时JVM参数加上:
-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=127.0.0.1:5555
比如说要启动一个hello.jar,并且是本地跑这个jar包,那么直接设置127.0.0.1作为远程调试的IP,5555是远程调试的端口,这个可以自由指定,不要端口冲突就好了。java -jar -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=127.0.0.1:5555 hello.jar
如果说这个jar包运行在远程服务器,那么这个address的IP就应该是你本机的真实IP,而不是用127.0.0.1。java -jar -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=192.168.x.x:5555 hello.jar
也可以不加IP,直接5555,但是不太安全,谁都可以通过5555端口调试,因此并不推荐。java -jar -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=5555 hello.jar
2、IDEA 添加新configurations
点击+,然后选择Remote:
注意事项参见图片。
3、在IDEA中debug该configuration
点击绿色小虫
4、在代码中打断点进行DEBUG
之后运行到该位置就会断到了。可以进行分析。找出问题。
总结
远程调试可以更快的发现代码的问题。但是,如果是生产环境,是不能随便断点的!切记。
远程调试更容易发现一些环境上的问题。发现那些代码一致、但是无法运行,并且和数据库无关的问题(有一些BUG是特殊的数据导致的)。
如果是tomcat 可以通过在catalina.sh文件的第一行添加:CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8089"
版权声明
本文章由作者“衡于墨”创作,转载请注明出处,未经允许禁止用于商业用途
评论区#
还没有评论哦,期待您的评论!
引用发言