每次做微信项目开发,最蛋痛的就是要调试。笔者使用的是java,github上有个不错的开源项目,项目发起者chanjarster@gmail.com,由于主人长期不维护,后来由微信团队接手了:
https://github.com/wechat-group/weixin-java-tools
升级版本后,发现以前写的代码出问题了,然而后台并没有拋异常(天啊)。。。然后,又要调试了。
过去,在没有服务器的情况想本地调试,于是在本地搭了个DNS服务器,再通过nginx反向代理转回本地,使用IDE单步调试。这个方法只适用于调试一些基础接口,高级一点的比如支付接口,人家的dns记录的域名是公网的,所以支付通知不会转回到自己的机子上。
在有公网服务器的情况下,可以通过远程调试找问题,前提是本地代码和远程发布的程序版本一致。笔者使用的是tomcat,开发工具是intellij idea。今天看到idea里面有个tomcat remote的东西,想到会不会是远程调试。说起来惭愧,今天才知道远程调试这东西,然后记录一下。
在网上找到一篇使用tomcat远程调试的文章:http://blog.trifork.com/2014/07/14/how-to-remotely-debug-application-running-on-tomcat-from-within-intellij-idea/
这里使用jpda这种方法:环境 ubuntu server 14.04, tomcat 7,Intellij Idea
在$CATALINA_HOME/bin下新增一个setenv.sh文件,添加:
export JPDA_OPTS="-agentlib:jdwp=transport=dt_socket, address=1043, server=y, suspend=n"
这个也可以在catalina.sh里面直接设置。
然后附上jpda参数重启tomcat:sudo service tomcat jpda start (catalina.sh under /etc/init.d/)
最后在Idea中添加tomat remote Configuration
启动调试就可以打断点了。。。
出现的问题有点不讲道理,无奈之下写篇日志放松一下