目錄html
通常啓動:java
java -jar -Dserver.port=8070 huishi-api.jar
遠程調試啓動:git
java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 huishi-api.jar
address是項目啓動之後對外提供的調試端口github
複雜的demo:web
java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Xms4096m -Xmx4096m -Xmn512m -Xss256k -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heapdump.hprof /data/dubbo/app/huishi-api.jar --server.port=8080 --dubbo.port=28080 --server.tomcat.basedir=/data/dubbo/cache/esmart-assign_8080 --log.home=/data/dubbo/logs/esmart-assign_8080 --log.level=info --log.stdout=0 --ecej.ops.port=80 --ecej.ops.iswitch=1 --jmx.rmi.port=18080
設置環境變量spring
set CATALINA_OPTS= -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
而後能夠直接命令行啓動tomcat便可。shell
若是是內嵌tomcat的話,上面的方法就不行json
set JAVA_OPTS= -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 java -jar %JAVA_OPTS% huishi-api.jar
固然這樣有點做弊,由於跟上面的命令本質是同樣的。api
環境變量只對tomcat/weblogic等Web服務器中間件有效,以「java -cp [*.jar] test.Main」方式運行的不會去讀取.tomcat
mvnDebug -DskipTests tomcat7:run -Pirm-web -Pdev
能夠查看maven安裝包內的bin內的mvnDebug.bat
@set MAVEN_DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
設置MAVEN_DEBUG_OPTS環境變量
set MAVEN_DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
再使用maven插件spring-boot啓動時,能夠用
mvn spring-boot:run -Dspring-boot.run.profiles=dev
這裏有多種方法能夠作到,根據tomcat所運行的操做系統而有些微的不一樣。可是無論用哪一種方法,這些配置的背後都作了同一件事:傳遞特定的啓動參數給 JVM,讓它啓用遠程調試(remote debugging)。
JVM 激活遠程調試的啓動參數有 JPDA_OPTS, CATALINA_OPTS 和 JAVA_OPTS。其中 JAVA_OPTS 是一般不建議使用的, 由於基於 JAVA_OPTS 的參數設定會暴露給全部的 JVM 應用, 而 CATALINA_OPTS 定義的設定值限制在Tomcat 內。
能夠在~/bin/catalina.bat頭部寫入或者新建setenv.bat文件
在 setenv.bat 文件中寫入:
set CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,address=1043,server=y,suspend=n"
若是運行在Linux上, setenv.sh 中寫入:
export CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,address=1043,server=y,suspend=n"
固然上面的設置也能夠直接放到 catalina.sh (catalina.bat )內,可是有個 setenv.* 額外的配置文件一直是最佳選擇, tomcat會自動讀取。
要注意的是, 有些人會碰到過用另外一個配置方法來啓用遠程調試:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=1043,suspend=n
-Xdebug and -Xrunjdw 與咱們上面推薦的設置不一樣之處在於, 它是一種舊方式,適用於JVM 小於 JAVA 5.0 的版本(包括5.0), 而 agentlib:jdwp適用於 JAVA 5.0 和之後版本。
最後經過下面的命令行啓動tomcat,便可完成tomcat啓用遠程調試啦。
startup.sh 或者 catalina.sh start startup.bat 或者 catalina.bat start
若是是window服務的話,必需要在屬性中加啓動參數,否則的話,是沒有效果的。
CommandLine會根據右邊選擇jdk版本自動生成,直接複製到命令裏面就能夠
手動配置Host,Port便可。
launch.json設置:
{ "type": "java", "name": "Debug (Attach)", "request": "attach", "hostName": "localhost", "port": 8000 }
在服務端啓動之後,啓動vs進行調試
.vscode/tasks.json
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "myMavenDebugCommand", "type": "shell", "command": "mvnDebug spring-boot:run", "group": "build" } ] }
launch.json
{ "type": "java", "name": "Debug (Attach)", "request": "attach", "hostName": "localhost", "port": 8008, "preLaunchTask": "myMavenDebugCommand" // <--It will be executed first. }