我的Spring Boot
webapp运行正常,我想通过Eclipse调试它。
因此,在启动我的远程Java应用程序调试器时,我应该听哪个端口?我的webapp上有一个设置我必须设置为启用调试吗?
答案 0 :(得分:152)
为什么不直接点击main()
方法并选择"Debug As... Java Application"
?
答案 1 :(得分:81)
有section 19.2 in Spring Boot Reference告诉您在启用远程调试支持的情况下启动应用程序。
$ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n \
-jar target/myproject-0.0.1-SNAPSHOT.jar
启动应用程序后,只需在运行/调试配置中添加远程Java应用程序配置,选择启动应用程序时定义的端口/地址,然后就可以自由调试了。
答案 2 :(得分:18)
更简单的解决方案:
而不是键入mvn spring-boot:run
,
只需输入mvnDebug spring-boot:run
您仍然需要通过为远程Java应用程序"远程Java应用程序进行新的调试配置来在Eclipse中附加调试器。在相关港口。
答案 3 :(得分:16)
我没有设置远程调试以使其正常工作,我使用了Maven。
spring-boot::run
。NB。如果您的IDE在执行逐行调试时发现项目的源代码时遇到问题,请查看this SO answer以了解如何手动将源代码附加到调试应用程序。
希望这有助于某人!
答案 4 :(得分:16)
假设您已成功关注Spring Boot's guide on setting up your Spring Boot application as a service。
您的应用程序工件驻留在let manager = FileManager.default
let documentURL = try! manager.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
let url = documentURL.appendingPathComponent("SomeData.plist")
let sampleDict = ["name" : "somebody", "age" : "30 ", "food" : "taco"]
do {
let data = try PropertyListSerialization.data(fromPropertyList: sampleDict, format: .xml, options: 0)
try data.write(to: url)
} catch let error as NSError {
print(error)
}
中,并附带配置文件/srv/my-app/my-app.war
:
/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
重新启动Spring Boot应用程序时,位于sudo service my-app restart
的日志文件应该是一行/var/log/my-app.log
。
打开到服务器的SSH端口转发隧道:Listening for transport dt_socket at address: 8002
。保持此SSH会话正常运行。
在Eclipse中,从工具栏中选择运行 - > 调试配置 - >选择远程Java应用程序 - >点击新按钮 - >选择连接类型标准(套接字连接),作为主机 localhost ,以及作为端口 8002 (或在之前的步骤中配置的任何内容) 。单击应用,然后单击调试。
Eclipse调试器现在应该连接到远程服务器。切换到 Debug 透视图应显示已连接的JVM及其线程。断点应在远程触发后立即触发。
答案 5 :(得分:13)
在下面的命令中运行pom.xml
:
mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
使用端口5005
上的调试选项启动远程Java应用程序
答案 6 :(得分:7)
我认为最好的解决方案是在pom.xml中添加一个插件,你不需要一直做任何事情:
preferences.getString(key, "");
答案 7 :(得分:3)
答案 8 :(得分:2)
请参阅http://java.dzone.com/articles/how-debug-remote-java-applicat以启用远程调试。 如果您使用tomcat来运行应用程序,请使用远程调试参数启动tomcat 或者您可以使用以下命令启动带有JPDA支持的tomcat。
窗
<tomcat bin dir>/startup.bat jpda
* nix中
<tomcat bin dir>/startup.sh jpda
这将启用端口8000上的远程调试
答案 9 :(得分:1)
使用eclipse或任何其他IDE,只需右键单击主弹簧启动应用程序,然后单击“debug as java application”
答案 10 :(得分:1)
这个问题已经回答了,但我也有同样的问题来调试Springboot + gradle + jHipster,
主要是Spring启动应用程序可以通过右键单击和调试进行调试, 但是当你使用gradle时,有一些额外的环境参数设置,那么就无法直接调试。
为了解决这个问题,Eclipse提供了一个额外的功能Remote Java Application
通过使用此功能,您可以调试应用程序。
按照以下步骤操作:
运行你的gradle应用程序
./gradlew bootRun --debug-jvm
命令
现在去eclipse - &gt;右键单击项目和调试配置 - &gt;远程Java应用程序。
将主机和端口添加为localhost,将端口添加为5005(默认为gradle debug,您可以更改它)
Refer了解更多细节和步骤。
答案 11 :(得分:1)
<?php
$servername = "localhost";
$username = "myusername";
$password = "mypassword";
$dbname = "pi_test_data";
$conn = new
mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("connection failed: "
. $conn->connect_error);
}
$sql = "INSERT INTO pi_test_data (status) VALUES ('$_GET[status]')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "
<br>" . $conn->error;
}
$conn->close();
?>
。放置一个调试器点,然后从邮递员之类的客户端调用应用程序
答案 12 :(得分:0)