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. Java JPDA 远程调试程序方式(Eclipse)_第1张图片
  5.  Java JPDA 远程调试程序方式(Eclipse)_第2张图片
  6. 唯一注意的地方是Launch Configuration务必选中第一步中创建的类,导出的路径任意假设为${PATH}
  7. 执行第二步所创建的jar包,命令如下:
  8. java -jar -Xdebug -Xrunjdwp:transport=dt_socket,address=8899,server=y,suspend=y jpda-test.jar
    
  9.  其中注意address=8899 指定jpda所监听的端口(后面调试用到,如果是远程运行还要开放端口)
  10. suspend=y 的意思是一直挂起本程序并等待远程调试的连接,设成suspend=n表示不挂成,这里需要设置为y,否则java 程序运行后,你无法连接上;成功运行后控制台出现如下提示:
  11. java -jar -Xdebug -Xrunjdwp:transport=dt_socket,address=8899,server=y,suspend=y jpda-test.jar
    Listening for transport dt_socket at address: 8899
  12. 接着增加debug 断点,然后打开eclipse debug Configurations ,最后点debug按钮
  13. Java JPDA 远程调试程序方式(Eclipse)_第3张图片
  14. Java JPDA 远程调试程序方式(Eclipse)_第4张图片
  15.  最终就可以远程调试运行在远端的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("");
		writer.println("");
		writer.println("

jpda Success debug

"); writer.println(""); writer.println(""); } }

把程序打包成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: 加载JVM的JPDA参考实现库

1.2 Xrunjdwp子参数(sub-options)配置
Xrunjdwp子参数的配置格式如下
Xrunjdwp:[=],[=]...

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。

你可能感兴趣的:(Java程序,java,eclipse)