我们公司使用的是scf服务,是类tomcat服务。所以有些地方跟tomcat还不太一样。但重要的都是java程序,所以只需要找到执行程序时,加上几个参数就可以了。
1.找到java执行jar包的地方,加入参数 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005。具体执行命令如下:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 $JAVA_OPTS -classpath $CLASS_PATH -Duser.dir=$DIR $SYSTEM_PROPERTY $MAIN_CLASS $OTHER_SCF_CONFIG -Dscf.service.name=$SERVICE_NAME >> /dev/null 2>&1 &
2.执行tomcat启动脚本(scf, startup.sh, catalina.sh)等。
3.服务启动后,使用ps -aux | grep servername来检测scf服务是否启动。
4.使用netstat -an | grep debugPort来检测调试端口是否启动。debugPort是操作1中address=5005。
5.启动eclipse,找到debug configuration->Remote java Application->Connect,配置host和ip(分别是服务器所在地址和刚刚配置好的debug端口),还有Project设置需要调试的工程。然后点击apply,debug按钮。(没有反应表示连接成功,千万不要在按一次,再按一次会出连接失败)。
6.在程序必经行打断点。
7.向服务器发送请求。
8.成功抵达断点处,开始调试即可。
tips:
1. 执行4时,5005端口在listen状态。
2. 点过一次后,5005端口处于established状态。