Java JPDA 远程调试程序方式(Eclipse)

sJPDA 的全称是 Java Platform Debugger Architecture,它是 Java 官方针对 Java 代码调试所设计的一个机制,具体介绍可参照 链接

Java Application 的设置方式

  1. 创建调试用的Main方法,相关代码如下:(实际上代码随意)
  2. import java.util.concurrent.TimeUnit;
    
    public class JPDAMain {
    
    	public static void main(String[] args) throws InterruptedException {
    		long startTime = System.currentTimeMillis();
    		System.out.println("start time:" + startTime);
    		TimeUnit.SECONDS.sleep(3);
    		long endTime = System.currentTimeMillis();
    		System.out.println("cost time:" + (endTime - startTime));
    	}
    
    }
  3. 在Eclipse上导出Runnable Jar,方式如下
  4.  
  5. 唯一注意的地方是Launch Configuration务必选中第一步中创建的类,导出的路径任意假设为${PATH}
  6. 执行第二步所创建的jar包,命令如下:
  7. java -jar -Xdebug -Xrunjdwp:transport=dt_socket,address=8899,server=y,suspend=y jpda-test.jar
    
  8.  其中注意address=8899 指定jpda所监听的端口(后面调试用到,如果是远程运行还要开放端口)
  9. suspend=y 的意思是一直挂起本程序并等待远程调试的连接,设成suspend=n表示不挂成,这里需要设置为y,否则java 程序运行后,你无法连接上;成功运行后控制台出现如下提示:
  10. java -jar -Xdebug -Xrunjdwp:transport=dt_socket,address=8899,server=y,suspend=y jpda-test.jar
    Listening for transport dt_socket at address: 8899
  11. 接着增加debug 断点,然后打开eclipse debug Configurations ,最后点debug按钮
  12.  最终就可以远程调试运行在远端的Java Application。

 Java Web Application设置方式

创建调试的类,这里使用web3.1新建一个Web Servlet,相关代码如下:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns = "/jpdaDemo")
public class JPDAServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		PrintWriter writer = resp.getWriter();
		writer.println("<html>");
		writer.println("<body>");
		writer.println("<h1>jpda Success debug</h1>");
		writer.println("</body>");
		writer.println("</html>");
	}

}

把程序打包成war的形式并部署到tomcat,接着修改tomcat启动参数(注意suspend=n)

WIN系统,在catalina.bat:

SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899 

*inux系统,在catalina.sh

CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899"

jpda 参数说明

虚拟机参数设置

1.1启用调试服务
-Xdebug 启用调试
-Xrunjdwp:<sub-options> 加载JVM的JPDA参考实现库

1.2 Xrunjdwp子参数(sub-options)配置
Xrunjdwp子参数的配置格式如下
Xrunjdwp:<name1>[=<value1>],<name2>[=<value2>]...

1.3 transport=dt_socket
JPDA front-end和back-end之间的传输方法。dt_socket表示使用套接字传输。

1.4 address=8899
JVM在8899端口上监听请求。

1.5 server=y
y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器。

1.6 suspend=y
y表示启动的JVM会暂停等待,直到调试器连接上。
suspend=y这个选项很重要。如果你想从Tomcat启动的一开始就进行调试,那么就必须设置suspend=y

通过${tomcat_home}/bin/startup.sh或catalina.sh start启动 ,同样控制台会出现

至此配置完成,然后在你想要的地方增加断点并在浏览器上触发该Servlet。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

victorkevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值