IntelliJ IDEA 远程调试

1.添加Remote: 

 2.服务器运行项目

   2.1 jar包      java -jar 启动

ps:

     服务器出现 Listening for transport dt_socket at address: 5005;

    本地debug启动项目,控制台出现Connected to the target VM, address: '192.168.160.130:5005', transport: 'socket';表示可以远程dubug了。

浏览器访问http://192.168.160.130:8080/demo/

本地代码进入断点处了:

    2.2 war包 Tomcat启动

   使用vim catalina.sh命令,编辑catalina.sh:

ps:

   默认Tomcat只允许本地调试,把默认的 localhost:8000 改成 0.0.0.0:5005,就代表任何ip都可以远程debug了。

[root@localhost bin]# vim catalina.sh
[root@localhost bin]# ./catalina.sh jpda start
Using CATALINA_BASE:   /usr/local/apache-tomcat-8.5.53
Using CATALINA_HOME:   /usr/local/apache-tomcat-8.5.53
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.53/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_11
Using CLASSPATH:       /usr/local/apache-tomcat-8.5.53/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.53/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]#

查看Tomcat的日志文件catalina.out:

21-Mar-2020 20:39:11.467 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
21-Mar-2020 20:39:11.484 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 6862 ms
2020-03-21 20:39:20.214  INFO 70337 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2020-03-21 20:39:20.219  INFO 70337 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 4 ms
Listening for transport dt_socket at address: 5005

可以看出Listening for transport dt_socket at address: 5005。

3.远程debug,勿滥用

      开发人员经常会使用到本地debug功能,有时候有场景需要远程debug日常环境的机器,在这种情况下可能会有多个人同时在使用这台机器,经常出现的现象是某一个人在远程debug这台机器,导致其他人一直在等待。而其他人也是一脸懵逼,不知道这台机器到底发生了什么…

如图,四个标签页均是访问http://192.168.160.130:8080/demo/。四个页面一直转,一直等待。。。

如何最小化的避免自己远程debug时对其他人造成的影响。这对debug操作者有一些要求。

 假如代码如下:

    @GetMapping(value = "/{id}")
    public String test1(@PathVariable Integer id) {
        return "hello world======>"+id;
    }

 设置如下:

再次访问浏览器,这次打开四个页面,分别访问:http://192.168.160.130:8080/demo/1http://192.168.160.130:8080/demo/2http://192.168.160.130:8080/demo/3http://192.168.160.130:8080/demo/4.结果只有http://192.168.160.130:8080/demo/2这个页面在刷新,也就是只有id==2的才进入了断点,减少了对其他线程的阻塞。

发布了187 篇原创文章 · 获赞 146 · 访问量 49万+

猜你喜欢

转载自blog.csdn.net/qq_37495786/article/details/105024440