一:远程调试osgi项目
1,远程端配置:
在项目的同目录中建一个启动脚本,我的是run-debug-mode.sh。
java -Xdebug -Xms64m -Xmx128m -Xrunjdwp:transport=dt_socket,address=9527,server=y,suspend=y -jar 1352967834941.jar 2>/dev/null >/dev/null &
中间这些参数正是为了Remote debug而设:
-XDebug启用调试
-Xrunjdwp加载JDWP的JPDA参考执行实例。
transport 用于在调试程序和 VM 使用的进程之间通讯。
dt_socket套接字传输。
server=y/nVM 是否需要作为调试服务器执行。
address=9527调试服务器监听的端口号。
suspend=y/n是否在调试客户端建立连接之后启动 VM 。
关于suspend多说一句,如果设置为y,它会阻塞程序运行,直到有客户端连接到对应的监听端口(这里是9527),程序才真正开始执行。我们有时候会抱怨程序一闪而过,还没来得及在本地加载上代码程序就执行完了,这种情况就可以使用suspend参数。
还有一个细节是-jar参数不能写到-Xdebug参数前,这样无法启用调试。
然后输入命令./run-debug-mode.sh启动项目。
2,客户端配置:
对于osgi项目一般bundle比较多,在上面的配置,选择Project时只需选择代码在最前面执行的包就可以了。不需要每个bundle都配置。
完了点击Debug。在需要的地方断点调试。注意远程的代码必须和本地代码一致,否则调试的信息不对。
2:对部署在tomcat的web远程debug
只有下面一步不同,其它都一样。
具体方法参见:http://jingyan.baidu.com/article/148a192199c7a24d71c3b103.html