rasp远程调试,tomcat为例

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

近期在做rasp相关的调研,对于开源代码openrasp和jrasp的源码做了相关研究,结合openrasp的技术文档,做了以下对于rasp远程调试的总结。

一、rasp

rasp分为动态注入和静态加载两种,这两种的调试方式基本一致,主要区别在于静态加载的方式,需要将rasp的启动参数提前写入到tomcat的启动脚本里面,以premian的方式启动的,而动态注入的启动方式是agentmain,就不需要添加启动参数了。

二、如何调试

1.premain方式

需要提前在tomcat的启动脚本,windows是bin/catalina.bat,linux则为bin/catalina.sh文件中添加rasp启动参数,
windows在 :execCmd 后面添加静态加载的参数:if “%ACTION%” == “start” set JAVA_OPTS=“-javaagent:%CATALINA_HOME%\rasp\rasp.jar”
%JAVA_OPTS%,然后添加调试信息:if “%ACTION%” == “start” set JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,address=1043,server=y,suspend=y %JAVA_OPTS%这样做就是为了在静态加载的时候,先进入调试idea工具,然后再加载rasp代码,方便调试,这里的%CATALINA_HOME%是你环境变量存储的tomcat目录值,当然你也可以直接写绝对路径,只要能找到rasp的jar包即可,如下所示:

set JAVA_OPTS=“-javaagent:%CATALINA_HOME%\rasp\rasp.jar” %JAVA_OPTS%
set JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,address=1043,server=y,suspend=y %JAVA_OPTS%

linux在elif [ “$1” = “start” ] ; then 后面添加静态加载参数:JAVA_OPTS=“-javaagent:${CATALINA_HOME}/rasp/rasp.jar ${JAVA_OPTS}” ,然后添加调试信息:JAVA_OPTS=“-agentlib:jdwp=transport=dt_socket,address=1043,server=y,suspend=y ${JAVA_OPTS}”,如下所示:

JAVA_OPTS=“-javaagent:${CATALINA_HOME}/rasp/rasp.jar
JAVA_OPTS=”-agentlib:jdwp=transport=dt_socket,address=1043,server=y,suspend=y ${JAVA_OPTS}"

2.agentmain方式

agentmain方式由于是动态注入的形式,所以不需要添加静态相关的jar包加载参数,只需要将上面的参数去掉静态加载参数,保留调试参数即可。这样在启动tomcat的时候,先启动idea,让环境提前加载,然后再尝试注入,这样就可以调试agentmain的代码了。

三、idea调试

在idea工具中,首先需要点击run -> Edit Configuration
在这里插入图片描述
点击 + 号,点击Remote JVM Debug
在这里插入图片描述
选择Debugger mode 选择attach to remote jvm调试,Transport选择socket,填写好你远程的主机ip及之前配置的调试信息端口号即可。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Raspberry Pi是一种小型的单片微型计算机,它的应用范围非常广泛,由于其体积小、成本低,被广泛应用于物联网、家庭娱乐以及智能家居等领域。Java作为一种非常流行的编程语言,也逐渐被应用于Raspberry Pi的开发中。下面将详细介绍Raspberry Pi的Java实现。 首先,Raspberry Pi的Java实现主要包含两个方面。一方面是Java SE Embedded,即Java编程语言在嵌入式系统和嵌入式设备上的实现。Java SE Embedded可直接运行在Raspberry Pi上,使其能够使用Java进行编程和应用开发。另一方面是Java ME Embedded,即Java嵌入式系统用于小型设备的高性能实现。Java ME Embedded适用于嵌入式系统,可运行在Raspberry Pi上,使Raspberry Pi能够支持Java ME平台。 其次,Raspberry Pi的Java实现可以通过多种方式进行编程和应用程序开发。其中,Java SE Embedded可以采用Eclipse、NetBeans和IntelliJ IDEA等开发工具,而Java ME Embedded则可使用Java ME SDK进行开发。此外,Raspberry Pi的Java实现还支持JavaFX,这是一种可以在桌面、浏览器和移动设备上运行的Java用户界面框架,十分方便实用。 总之,Raspberry Pi的Java实现可以使Raspberry Pi拥有更加灵活和多样的应用,同时也为Java开发者提供了一个全新的开发平台。此外,由于Java编程语言的强大和普遍性,Raspberry Pi的Java实现具有较高的开发效率和可维护性。可以预计,在未来的智能家居和物联网应用中,Raspberry Pi的Java实现将会发挥其巨大的潜力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值