Java安全之jar包调试技巧
大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。
Java安全之jar包调试技巧
调试程序
首先还是创建一个工程,将jar包导入进来
调试模式的参数
启动中需要加入特定参数才能使用debug模式,并且需要开放调试端口
JDK5-8:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
JDK9+:
-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 的应用场景是,你的程序在启动时出现了一个故障,为了调试,必须等到调试方连接上来后程序再启动。
(3) address
暴露的调试连接端口,默认值为 8000。
(4) onthrow
当程序抛出设定异常时,中断调试。
(5) onuncaught
当程序抛出未捕获异常时,是否中断调试,默认值为 n。
(6) launch
当调试中断时,执行的程序。
(7) timeout
该参数限定为 java -agentlib:jdwp=… 可用,单位为毫秒ms。
当 suspend = y 时,该值表示等待连接的超时;当 suspend = n 时,该值表示连接后的使用超时。
IDEA配置远程调试
下断点后能直接停下来。
class文件夹调试
其实也比较简单,只需要将他打包成一个jar包或者是war包,然后执行如上操作就好了。
cd src
jar -cvf test.jar *
总的来说调试还是比较重要,其实不仅仅是jar包的调试,比如还有Spring Boot(Spring Boot以jar包启动调试与上面类似)、Tomcat、weblogic这些。假设条件允许情况下,做一些审计时候,比如war包,也可以采用远程调试的方式进行审计。会更简单快捷定位一些。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119884.html原文链接:https://javaforall.cn
相关文章
- Jease 2.6发布 Java开源内容框架
- JVM调优总结:反思
- JVM调优总结:调优方法
- JVM调优总结:新一代的垃圾回收算法
- JVM调优总结:典型配置举例
- JVM调优总结:分代垃圾回收详述
- JVM调优总结:垃圾回收面临的问题
- JVM调优总结:基本垃圾回收算法
- JVM调优总结:一些概念
- 用Java GUI编写的画板程序
- Java的动态绑定机制
- jOOQ 2.0.2发布 Java的ORM框架
- Java中带复选框的树的实现和应用
- Java网络编程菜鸟进阶:TCP和套接字入门
- 甲骨文与谷歌专利权之争定于今年三月开审
- Java调用C/C++编写的第三方dll动态链接库
- 集成开发环境 NetBeans IDE 7.1正式版发布
- kangle 2.7.5紧急发布 防hash碰撞攻击
- 东方通技术引领模式为国产软件“争权”
- UML中关联,组合与聚合等关系的辨析