Java 远程调试:

概念:	
	JPDA(Java Platform Debugger Architecture)是Java平台调试体系结构的缩写,通过JPDA提供的API,开发人员可以方便灵活的搭建Java调试应用程序。
	JPDA 主要由三个部分组成:Java虚拟机工具接口(JVMTI),Java调试线协议(JDWP),以及Java调试接口(JDI)

实战:
	第一步:让服务器支持远程调试:

		jdk1.4以后:
		服务器启动参数:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8899
			说明:# -Xrunjdwp	通知JVM使用(java debug wire protocol)来运行调试环境。
					transport	指定调试数据的传送方式,dt_socket表示使用socket模式
					server		指定是否支持以server模式运行的JVM
					suspend		指定是否在调试客户端建立起来后再启动JVM
					address		指定客户端需要监听的端口
			举例:java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8899 -jar application.jar

		jdk1.4
		服务器启动参数:-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899
			说明:# -Xdebug	通知JVM开启debug模式。
			举例:java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899 -jar application.jar 
			


	第二步:在idea中创建一个Remote并启动。

		注意:本地的代码必须和远程服务器上的代码一致,否则可能会导致无法进入断点。若不能保持一致,则最起码应该保证要调试的类是一致的。

		步骤:Idea中创建一个Remote,并指定服务器的地址和-Xrunjdwp中设置的address,然后启动Remote,在需要调试的地方打上断点,即可调试。


	注意:如果idea没有连接到远程服务器,则可能是由于端口不合适造成的。故端口建议使用8788附近的端口(8788、8789、8899等),9788端口不可用(原因未查,可能端口有范围限制)。

idea中添加Remote的步骤

 

 

Tip:

debug时,在Variables窗口下,右键选择" Evaluate Expression...",可以打开一个窗口,在该窗口的输入框中输入我们想要调试的代码(可以是变量,也可以是语句),点击Evaluate按钮即可看到此时该代码在JVM中执行的结果。

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐