没有项目的源码,在eclipse下进行tomcat的远程调试,小计一下。

最近需要对于一个上了年纪的项目进行维护,但是由于历史悠久,没有办法找到该项目对应的比较完整的源码,

因此经过了一番挣扎之后,最终利用tomcat的远程调试来解决问题。(前提是有人对于该项目有一定的熟悉程度)

1.通过分析问题,找到可能出现该问题的class文件,暂时无法打开在这些文件。

2.对这些文件进行反编译,从而得到我们熟悉的Java文件。(反编译的工具挺多的,具体哪一种比较稳定实用还待考证。反编译工具使用的是jadx)

3.在eclipse中新建一个Java项目,只需要加入之前得到的Java文件,目录结构必须保持对应。(引入这几个类所依赖的class文件,这些Java文件编译报错好像也并没有影响调试,但是看到标红会有强迫症)

4.关闭web服务器,修改tomcat根目录下的bin文件夹中的startup.bat,在其中加上(其中的端口号8000,这个值自己设定,只要确认该端口没有被占用)

SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

 

  加入的具体位置 如下

 

5.启动项目,tomcat的命令行窗口第一行会看到  Listening for transport dt_socket at address: 8000,表示该端口正在被监听,等待连接。

6.在Debug Configurations增加远程调试配置,Port与上面的端口保持一致。

 

project 就是刚才创建的新项目,点击Browser可以进行选择。

Host就是启动的tomcat 所在服务器的IP,

Port就是刚才设定的等待连接的端口。

 

 7.点击debug,在需要调试的地方打上断点,在浏览器访问tomcat中的项目,等待结果的到来。

 

备注:刚开始使用的方式是将class文件拷贝出来,然后进行反编译得到Java文件,

   在其中加上打印语句,然后在进行编译成class文件放到原来的位置,

   这样调试不仅比较麻烦(需要不断的重启服务),有时候报错没有在控制台输出信息(比较郁闷,还没找到原因)

 

小发现就是在使用eclipse进行Java文件编译的时候,可以加入一些外部的class文件进行构建,有点爽。

 

posted @ 2020-03-13 22:15  classBug  阅读(390)  评论(0编辑  收藏  举报