如何使用EclipsedebuggingSpring Boot应用程序?

我的Spring Boot webapp运行得很好,我想通过Eclipse进行debugging。

所以当启动我的远程Java应用程序debugging器,我应该听哪个端口? 我的web应用程序有一个设置,我必须设置为启用debugging?

为什么不直接右键单击main()方法并select"Debug As... Java Application"

Spring Boot Reference中的第19.2节介绍了启用远程debugging支持的应用程序。

 $ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n \ -jar target/myproject-0.0.1-SNAPSHOT.jar 

启动应用程序后,只需在运行/debuggingconfiguration中添加远程Java应用程序configuration ,select您在启动应用程序时定义的端口/地址,然后可以自由debugging。

我不需要设置远程debugging为了得到这个工作,我使用Maven。

  1. 确保你已经安装到Eclipse的Maven插件。
  2. 点击Run> Run Configurations> Maven Build> new launch configuration
    • 基本目录: 浏览到您的项目的根目录
    • 目标: spring-boot::run
  3. 单击应用,然后单击运行

NB。 如果您的IDE在进行逐行debugging时遇到问题,请查看此答案,以了解如何手动将源代码附加到debugging应用程序。

希望这可以帮助别人!

更简单的解决scheme

而不是键入mvn spring-boot:run ,只需键入mvnDebug spring-boot:run

您仍然需要通过在相关端口上为“远程Java应用程序”创build一个新的debuggingconfiguration来在Eclipse中附加debugging器。

在放置pom.xml的位置运行以下命令:

 mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005" 

并使用端口5005上的debugging选项启动远程Java应用程序

如何debugging远程登台或生产Spring Boot应用程序

服务器端

假设您已经成功地遵循Spring Boot的指南,将Spring Boot应用程序设置为服务 。 您的应用程序工件驻留在/srv/my-app/my-app.war ,并附带configuration文件/srv/my-app/my-app.conf

 # This is file my-app.conf # What can you do in this .conf file? The my-app.war is prepended with a SysV init.d script # (yes, take a look into the war file with a text editor). As my-app.war is symlinked in the init.d directory, that init.d script # gets executed. One of its step is actually `source`ing this .conf file. Therefore we can do anything in this .conf file that # we can also do in a regular shell script. JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,address=localhost:8002,server=y,suspend=n" export SPRING_PROFILES_ACTIVE=staging 

当你使用sudo service my-app restart重新启动Spring Boot应用sudo service my-app restart ,在位于/var/log/my-app.log日志文件中应该是一条线,指出Listening for transport dt_socket at address: 8002

客户端(开发者机器)

打开到服务器的SSH端口转发隧道: ssh -L 8002:localhost:8002 myusername@staging.example.com 。 保持这个SSH会话运行。

在Eclipse中,从工具栏中selectRun – > Debug Configurations – >selectRemote Java Application – >点击Newbutton – >selectConnection Type Standard(Socket Attach) ,作为Host localhost ,在之前的步骤中configuration)。 单击应用 ,然后debugging

Eclipsedebugging器现在应该连接到远程服务器。 切换到Debug透视图应显示已连接的JVM及其线程。 当它们被远程触发时,断点应该被触发。

在我看来,最好的解决scheme是在pom.xml中添加一个插件,而且你不需要随时做任何事情:

 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <jvmArguments> -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9898 </jvmArguments> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> 

请参阅http://java.dzone.com/articles/how-debug-remote-java-applicat启用远程debugging。; 如果您使用的是tomcat来运行您的应用程序,请使用远程debugging参数启动tomcat,或者使用以下命令启动带有JPDA支持的tomcat。

视窗

 <tomcat bin dir>/startup.bat jpda 

* nix中

 <tomcat bin dir>/startup.sh jpda 

这将启用端口8000上的远程debugging

使用Eclipse或任何其他IDE,只需右键单击您的主要弹簧启动应用程序,然后单击“debugging为Java应用程序”