java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java远程debug调试

Java远程debug调试的操作步骤

作者:liyanchao2018

日常项目中,通常我们的代码都是部署到远程的服务器,有时线上出现了问题,经常需要我们增加一些日志来排查问题,但是如果是测试环境的场景下或者我们能进行远程调试的话,我们就可以使用远程的Debug方式进行远程调试,下面给大家介绍一下Java远程debug调试的操作步骤

idea启动java项目,debug调试远程项目代码操作步骤:

1、将项目打成jar包,上传服务器,使用命令启动jar

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8889 MyApp

启动命令解析: 这个命令使用的是主类名启动,而非 -jar myApp.jar的方式。

1.1、解析启动命令含义

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8889 是一个用于启动 Java 程序并开启远程调试功能的命令。下面为你详细解释该命令中各个部分的含义:

1.2、整体命令结构

1.3、JDWP 选项参数

1.4、示例场景

假设你有一个名为 MyApp 的 Java 程序,完整的启动命令可能如下:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8889 MyApp

此命令会启动 MyApp 程序,并开启远程调试功能,允许外部调试器通过 8889 端口连接到该 JVM 进行调试。

2、idea设置远程调试

idea打开java项目后,设置remote jvm debug,选择项目模块,host地址是jar包部署到服务器的地址,port是使用java命令启用的等待调试器链接的端口。

3、执行debug

点击debug启动项目,在浏览器上输入:http://10.1.2.133:8889/user/findAll 在idea中findAll方法中打上断点,访问这个url后,断点就会收到调用,就可以debug调试项目了。

4、java命令启动项目,使用-jar myApp.jar与主类名启动myApp的区别:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8889 MyApp
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8889 -jar myApp.jar

解析: 服务器启动java项目,可以启动jar包或者寻找主类名启动。

这个命令不一定非要使用 -jar xxx.jar 来指定启动的 JAR 包。是否使用 -jar 选项取决于你启动 Java 程序的方式。下面为你详细分析不同情况:

情况一:使用主类名启动

如果你像给出的命令 java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8889 MyApp 这样,直接指定主类名(MyApp)来启动 Java 程序,那么就不需要 -jar 选项。这种方式要求主类 MyApp 必须位于类路径(classpath)下,JVM 会在类路径中找到这个类并执行其 main 方法。

情况二:使用 JAR 包启动

当你想通过 JAR 包来启动 Java 程序时,就需要使用 -jar 选项。此时,你需要把 MyApp 替换为具体的 JAR 包名称,例如:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8889 -jar myapp.jar

在这个命令里,-jar myapp.jar 告知 JVM 从 myapp.jar 这个 JAR 包中寻找主类并执行。要注意的是,这个 JAR 包必须是可执行的,也就是在其 MANIFEST.MF 文件中指定了主类。

总结

是否使用 -jar 选项要依据你的启动需求来定:

到此这篇关于Java远程debug调试的操作步骤的文章就介绍到这了,更多相关Java远程debug调试内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文