DevNotes-Java开发中jar包调试技巧-《Java笔记》

admin 2025-10-19 03:02:18 编程 来源:ZONE.CI 全球网 0 阅读模式

Java jar**

调试模式的参数

启动中需要加入特定参数才能使用debug模式,并且需要开放调试端口

JDK5-8

  1. -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005

JDK9+

  1. -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005

suspend=n表示的是启动Java应用时是否立即进入调试模式,suspend=y表示启动即暂停,suspend=n则表示启动时不需要暂停。address=*:5005表示的是Debug监听的服务地址和端口,根据需求修改,上述配置会监听到0.0.0.0

参数说明

(1) transport

指定运行的被调试应用和调试者之间的通信协议,它由几个可选值:dt_socket:主要的方式,采用 socket 方式连接dt_shmem:采用共享内存方式连接,仅支持 Windows 平台(暂未验证)

(2) server

当前应用作为调试服务端还是客户端,默认为 n。如果想将当前应用作为被调试应用,设置该值为 y;如果想将当前应用作为客户端,作为调试的发起者,设置该值为 n。

(3) suspend

当前应用启动后,是否阻塞应用直到被连接,默认值为 y。在大部分的应用场景,这个值为 n,即不需要应用阻塞等待连接。一个可能为 y 的应用场景是,程序在启动时出现了一个故障,为了调试,必须等到调试方连接上来后程序再启动。

(4) address

暴露的调试连接端口,默认值为 8000。

(5) onthrow

当程序抛出设定异常时,中断调试。

(6) onuncaught

当程序抛出未捕获异常时,是否中断调试,默认值为 n。

(7) launch

当调试中断时,执行的程序。

(8) timeout

该参数限定为 java -agentlib:jdwp=… 可用,单位为毫秒ms。当 suspend = y 时,该值表示等待连接的超时;当 suspend = n 时,该值表示连接后的使用超时。

IDEA配置远程调试

编译后的class文件夹调试

只需要将编译后的class字节码文件打包成一个jar包或者是war包,然后执行如上操作就好了。

  1. cd src
  2. jar -cvf test.jar *

总结

总的来说调试还是比较重要,其实不仅仅是jar包的调试,比如还有Spring Boot(Spring Boot以jar包启动调试与上面类似)、Tomcat、weblogic这些。假设条件允许情况下,做一些审计时候,比如war包,也可以采用远程调试的方式进行审计。会更简单快捷定位一些。

以太坊cppgolang区别 编程

以太坊cppgolang区别

以太坊是一种去中心化的开源平台,它采用智能合约技术,旨在构建和运行不受干扰的分布式应用程序。作为目前最受欢迎的区块链平台之一,以太坊提供了多种编程语言的支持,其
progolang 编程

progolang

Go语言(Golang)是由Google开发的一门静态类型编程语言。作为一名专业的Golang开发者,我深知这门语言的优势和特点。在本文中,我将介绍Golang
golangn个发送者 编程

golangn个发送者

Golang是一种开源的编程语言,由Google团队开发,旨在提高程序的并发性和简化软件开发过程。在Go语言中,有时需要向多个接收者发送信息。本文将介绍如何在G
golang技能图谱 编程

golang技能图谱

从互联网行业的快速发展到人工智能技术的日益成熟,各种编程语言也应运而生。而在这众多的编程语言中,Golang(即Go)作为一门强大且高效的开发语言备受关注。Go
评论:0   参与:  8