如何调试jar包中的源码

如何调试jar包中的源码,第1张

深入学习开源代码很多时候都需要去调试别人的jar包。当然如果你能拿别人的源码搭一个项目运行起来这样式不需要再去调试jar文件了,但是这样费时又费力。而且到最后也不一定能正常运行起来。接下来将介绍如果debug源码。

调试jar文件

这里以调试项目中搭好的springmvc框架中的DispatcherServlet为例,一次讲解如何debug进入这个类的方法。

下载对应框架版本的src源码,我这里是spring3.2.4。

把源码引入jar文件中。

a、找到DispatcherServlet的class文件所属的jar文件,这里是spring-webmvc-3.2.4.RELEASE.jsr。

b、选中项目右键如下图:

c、在Libraries下找到jar文件,选中Source attachment,点击Edit按钮

d、在source attachment中点击“引入文件夹”按钮,选中jar文件对应的文件夹

e、点击OK,即可在source attachment中看到引入的源码文件夹,点击OK。

进入调试。*重启eclipse*,进入DispatcherServlet类设置好断点,debug启动项目,然后访问断点。

接下来,我们就可以进入debug跟踪代码了。

还有一种引入源码的方式是在eclipse中打开我们要调试的java类,把源码直接引入到这个class类中,基本方式都一样。因为我这里用了反编译插件,所以class文件会自动被反编译,所以就不再演示了。

一.jar包的远程debug:

1.在pom文件中添加如下插件(直接复制即可)

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

<configuration>

<jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9600</jvmArguments>

</configuration>

</plugin>

2.在idea上选择Remote并修改ip和端口为远程访问地址,注意:这里的端口不能与项目的端口一样,相当于重新使用另外一个端口作为该远程通信,不能占用项目本身的启动端口。

3.远程服务器上使用下面命令启动项目

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=9600,suspend=n -jar cykj4app-1.0-SNAPSHOT.jar

4.项目启动成功后,在idea上启动连接,启动成功后即可访问接口在本地打断点调试

二.war包的远程debug

1.2.步骤同上

3.由于war包需要在tomcat上运行,所以先添加tomcat相关配置

①.修改tomcat bin下的startup.sh中的最后一行加上jpda启动

修改前:exec "$PRGDIR"/"$EXECUTABLE"start "$@"

修改后:exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"

②.修改tomcat bin下的catalina.sh,(linux中输入:/为在文件中搜索:/JPDA_ADDRESS)搜索到JPDA_ADDRESS="localhost:8000",将其修改为你要配置的远程通信端口

修改前:JPDA_ADDRESS="localhost:8000"

修改后:JPDA_ADDRESS="9600"

4.修改完后启动tomcat即可在本地打断点调试

exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"

三.连接成功如下图:

1、ctrl+shift+alt+s

d出项目设置窗口,点击artifacts页签,点+号,选择jar

empty。修改jar

name,将右侧需要打包进去的资源拖到左侧,记住output

directory

路径。保存配置。这样就创建了一个新的artifact。

2、回到idea,菜单build

build

artifacts..

选择刚才创建的artifact,点ok

生成了。output

directory目录查看你的jar文件吧。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12189763.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存