本篇技術文章中,通州北大青鳥Java技術教員將給大家介紹一下如何開啟遠程調試。如果需要開啟Java虛擬機的遠程調試,需要在JVM的啟動參數中加入。下面為XML代碼:
-Xdebug -Xrunjdwp:transport=dt_socket, address=8000,server=y,suspend=y
各個參數意義如下:
-Xdebug:啟用調試特性
-Xrunjdwp:啟用JDWP實現,它包含若干子選項:
transport=dt_socket:表示使用套接字傳輸。
address=8000:JVM在8000端口上監聽請求。
server=y:y表示啟動的JVM是被調試者。如果為n,則表示啟動的JVM是調試器。
suspend=y:y表示啟動的JVM會暫停等待,直到調試器連接上。
那么我們如何在tomcat上加入遠程調試(以apache-tomcat-6.0.37版本為例)?通州北大青鳥介紹:
將startup.sh中的XML代碼:
exec "$PRGDIR"/"$EXECUTABLE" start "$@" 修改成:
exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@" 即可。
因為在catalina.sh中會判斷是否開啟遠程調試,而且各個參數均有默認值,如下所示:
if [ "$1" = "jpda" ] ; then
if [ -z "$JPDA_TRANSPORT" ]; then
JPDA_TRANSPORT="dt_socket"
fi
if [ -z "$JPDA_ADDRESS" ]; then
JPDA_ADDRESS="8000"
fi
if [ -z "$JPDA_SUSPEND" ]; then
JPDA_SUSPEND="n"
fi
if [ -z "$JPDA_OPTS" ]; then
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
fi
CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
shift
fi
默認tomcat啟動時不掛起,不會等待調試器連接上,這也是我們最常用的的模式。(通州北大青鳥分享)