进来对ofbiz开发的项目进行了断点调试。在官方文档上找到了一个断点调试的文章:http://docs.ofbiz.org/display/OFBIZ/Running+and+Debugging+OFBiz+in+Eclipse
英文好的可以考虑直接看英文文档。
断点调试的基本点:
1、启动ofbiz的时候必须以"%JAVA_HOME%/bin/java" -Xms128M -Xmx384M -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -jar ofbiz.jar > runtime/logs/console.log 的方式来启动ofbiz项目。这样就为我们的调试开启了外接端口,这里为5005,当然你可以改为其他任何的端口
2、我们只能对那些java类文件进行断点调试,不能对那些beanshell文件进行断点调试
3、这个和传统的调试方式不同的是,传统的是直接设定tomcat的启动模式为debug模式,然后通过eclipse项目的插件完成。现在是通过建立一个远程调试来完成,主要是通过启动ofbiz提供的端口服务
4、以上我都在windows xp环境下测试可行
5、当你不知道你是否以debug方式启动了ofbiz,你可以用netstat -an 看里边是不是有5005(当然是你参数中指定的端口)。
具体步骤:
Normally we start OFBiz with the command line
正常的我们以如下的方式启动ofbiz
%JAVA_HOME%/bin/java /-jar ofbiz.jar
To start in debug mode use the command line
我们使用如下的命令以debug方式启动ofbiz。
%JAVA_HOME%/bin/java /-Xdebug /-Xnoagent /-Djava.compiler=NONE /-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8091 /-jar ofbiz.jar
This changed command line instructs java to run in debug mode listening for a socket connection on port 8091 for a debugger to connect. You can change the port number to any port not otherwise being used.
这个命令行是让java以debug模式监听8091端口,ofbiz4版本的都是5005为默认的端口了。这个端口号你可以随便改,只是别和其他端口冲突了。
Before connecting you have to create a new debug configuration.
在eclipse的菜单中选择“Run”菜单,然后选择“Debug...” 菜单,这时候一个调试窗口应该弹出了。
在左边的树形结构菜单中选择“Remote Java Application”
点击“New”按钮(这个按钮在底部左下方,不过我没找到,这个你可以通过点击右键来创建)
在右边的新出现的面板中填写一个名字(用ofbiz或者你的项目名称都行,这里我用yyy)
选择yyy这个项目(实际上就是你要调试的项目)
对于Connect Type选择“standard”
主机名写localhost(我的那默认的就是,当然你也可以写ip)
这里指定我们项目的选吗了,直接点击“Add...”,将我们的ofbiz那个需要断点调试的项目加上
如果你已经启动了那个需要断点调试的项目,点击“Apply”按钮,你就已经在debug了。启动Debug视图就可以看到那个Debug已经在运作了。
这时候在你本地的源码中加上几个断点试试。
You know that you are connected when you see a start/stop button in the debug perspective of Eclipse.
当你看到Debug视图上的start和stop按钮时,你应该知道你已经链接到要被调试的项目上了。
原理:1、java本身提供了调试接口
2、ofbiz以debug方式启动的时候,开放了这个接口的端口给外部访问
3、我们在eclipse中加载了项目的源码,然后将源码和远程部署的项目(也可以是本地)对应上,在本地给java源码加上断点的时候,直接反馈就是给正在运行的项目加上了断点。这个技术叫做JPDA。
4、eclipse在2005年就已经支持了这个远程调试的东东,具体请参考:http://www.eclipsezone.com/eclipse/forums/t53459.html