调试分两种
1.没有远程调试环境
这种情况下只能通过查看远程服务器上的log来调试,如果在异常信息中出现unknown source说明编译的时候没有加入行号的信息,按如下修改
a)通过javac编译时,默认相当于指定-g:source,lines,这样编译出来的class文件中会包含源代码和行号信息
b)而通过ant编译时,默认相当于指定-g:none,这样编译出来的class文件会比较小,但是不包含任何调试信息,所以出错的时候就会打印出unknown source。修改ant的编译文件如下:
2.有远程调试环境(即开发机可以连接服务器)
修改%TOMCAT_HOME%\bin\startup.bat最后部分的内容。
set JPDA_ADDRESS=8114
set JPDA_TRANSPORT=dt_socket
set JPDA_SUSPEND=y
call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%
修改后另存为jpda.bat
然后在eclipse中操作如下:
Debug Configurations -> 新建Remote Java Application,取名字为"myDebug"
Project:调试的工程
Connection Type: Standard(Socket Attach)
Connection Properties:
Host:远程服务器地址
Port:8114
Allow termination of remote VM 打上勾。
ok了,在服务器端先运行jpda.bat,控制台显示如下信息,之后就处于等待状态了:
Listening for transport dt_socket at address: 8114
然后在eclipse中启动myDebug
这时候可以看到远程服务器的控制台又继续运行了。
等待远程服务启动完毕,现在试着在eclipse中的程序中打个断点,然后打开IE访问远程的应用,哈哈,是不是eclipse停在了你打的断点那里了。
恩恩,到此为止。
1.没有远程调试环境
这种情况下只能通过查看远程服务器上的log来调试,如果在异常信息中出现unknown source说明编译的时候没有加入行号的信息,按如下修改
a)通过javac编译时,默认相当于指定-g:source,lines,这样编译出来的class文件中会包含源代码和行号信息
b)而通过ant编译时,默认相当于指定-g:none,这样编译出来的class文件会比较小,但是不包含任何调试信息,所以出错的时候就会打印出unknown source。修改ant的编译文件如下:
<javac destdir="${build.classes}" srcdir="${src.java}"
classpathref="lib.classpath" encoding="utf-8"
debug="true" debuglevel="source,lines,vars"/>
2.有远程调试环境(即开发机可以连接服务器)
修改%TOMCAT_HOME%\bin\startup.bat最后部分的内容。
set JPDA_ADDRESS=8114
set JPDA_TRANSPORT=dt_socket
set JPDA_SUSPEND=y
call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%
修改后另存为jpda.bat
然后在eclipse中操作如下:
Debug Configurations -> 新建Remote Java Application,取名字为"myDebug"
Project:调试的工程
Connection Type: Standard(Socket Attach)
Connection Properties:
Host:远程服务器地址
Port:8114
Allow termination of remote VM 打上勾。
ok了,在服务器端先运行jpda.bat,控制台显示如下信息,之后就处于等待状态了:
Listening for transport dt_socket at address: 8114
然后在eclipse中启动myDebug
这时候可以看到远程服务器的控制台又继续运行了。
等待远程服务启动完毕,现在试着在eclipse中的程序中打个断点,然后打开IE访问远程的应用,哈哈,是不是eclipse停在了你打的断点那里了。
恩恩,到此为止。