因为要知道 tomcat 抛出的错误详细情况,被迫调试源码。
准备工作
- 下载tomcat(下载)
解压,将项目放在 webapp 文件夹,在 bin 文件夹中双击 startup.bat(windows),就可以将 tomcat 启动了 - 下载源码(还是上面的链接,选 src 下载就好)
- 开启 tomcat JDPA (关于 JDPA 详细情况不赘述,直接说怎么开启)
在 apache-tomcat-xxx/bin 下新建 jdpa.bat,内容为
set JPDA_ADDRESS=8000
set JPAD_TRANSPORT=dt_socket
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8899
startup
JPDA_ADDRESS 是 tomcat 中的端口,可以查看 catalina.bat 确定,默认为 8000。
address=8899 是监听端口,之后 ide 中要填写。
双击即可启动
这个情况下是等待链接,接下来就可以开始在 ide 上做工作了。
Idea 2016.3
- 在 file -> open 中打开 tomcat 解压后的源码
选择右上方的 Edit Configuration
在打开的窗口,左上方选择加号再选择 remote
在打开的界面输入必要参数
1 自己起的名称,可以随便
2 端口,必须是之前在 tomcat JDPA 中填写的端口(此处是8899)
3 选择 tomcat 源码打断点,先双击之前的 jdpa.bat,再点击 Idea 的 debug 按钮(启动类是 Bootstrap.java)
之后就可以开始单步调试了。
Myeclipse 2015
- 新建一个项目(我起名为 TestTom)
- import -> File System -> tomcat 源码 -> 选择 java 子文件夹 -> into folder 选择刚刚创建的项目 -> Finish
- 将刚刚 import 的 java 文件夹下面的 两个 子文件夹 javax 和 org 拖入 src 中(版本不同,情况可能不同),会有错误,但是不影响。
- 右击项目 -> debug as -> debug configuration
- 在打开的页面左边栏中选择 Remote Java Application ,右击,new(图片1处)。
- 填入localhost 和 之前的端口(图片2处)
- 和上面一样,打断点,打开 jdpa.bat,再点 debug 按钮(图片3处),开始调试。
远程调试其他项目
其实上述的是提供给调试服务器上的项目的,将上述的 tomcat 源码项目切换为其他项目,host 改为远程 ip ,就可以调试其他项目了。