因爲mvn tomcat6:run是使用embedded tomcat的方式,所以,debug必須經過配置Maven實現,在環境變量中配置:java
MAVEN_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
其中,address=8000表示經過JDB鏈接的端口爲8000。配置完成後,運行mvn tomcat6:run 會啓動8000端口,用於JDWP調試。shell
在命令行中運行:編程
jdb –connect com.sun.jdi.SocketAttach:hostname=localhost,port=8000
能夠經過jdb的命令添加斷點,並進行調試,經常使用的命令以下:數組
** 命令列表 ** connectors -- 列出此 VM 中可用的鏈接器和傳輸器 run [類 [參數]] -- 開始執行應用程序的主類 threads [線程組] -- 列出線程 thread <線程 ID> -- 設置默認線程 suspend [線程 ID] -- 暫停線程(默認值爲 all) resume [線程 ID] -- 恢復線程(默認值爲 all) where [<線程 ID> | all] -- 轉儲線程的堆棧 wherei [<線程 ID> | all] -- 轉儲線程的堆棧以及 pc 信息 up [n 幀] -- 向上移動線程的堆棧 down [n 幀] -- 向下移動線程的堆棧 kill <線程 ID> <表達式> -- 停止具備給定的異常對象的線程 interrupt <線程 ID> -- 中斷線程 print <表達式> -- 輸出表達式的值 dump <表達式> -- 輸出全部對象信息 eval <表達式> -- 計算表達式的值(與 print 做用相同) set <lvalue> = <表達式> -- 爲字段/變量/數組元素指定新值 locals -- 輸出當前堆棧幀中的全部本地變量 classes -- 列出當前已知的類 class <類 ID> -- 顯示已命名類的詳細信息 methods <類 ID> -- 列出類的方法 fields <類 ID> -- 列出類的字段 threadgroups -- 列出線程組 threadgroup <名稱> -- 設置當前線程組 stop in <類 ID>.<方法>[(參數類型,...)] -- 在方法中設置斷點 stop at <類 ID>:<行> -- 在行中設置斷點 clear <類 ID>.<方法>[(參數類型,...)] -- 清除方法中的斷點 clear <類 ID>:<行> -- 清除行中的斷點 clear -- 列出斷點 catch [uncaught|caught|all] <類 ID>|<類模式> -- 出現指定的異常時中斷 ignore [uncaught|caught|all] <類 ID>|<類模式> -- 對於指定的異常,取消 'catch' watch [access|all] <類 ID>.<字段名> -- 監視對字段的訪問/修改 unwatch [access|all] <類 ID>.<字段名> -- 中止監視對字段的訪問/修改 trace [go] methods [thread] -- 跟蹤方法的進入和退出。 -- 除非指定 'go',不然全部線程都將暫停 trace [go] method exit | exits [thread] -- 跟蹤當前方法的退出或全部方法的退出 -- 除非指定 'go',不然全部線程都將暫停 untrace [方法] -- 中止跟蹤方法的進入和/或退出 step -- 執行當前行 step up -- 執行到當前方法返回其調用方 stepi -- 執行當前指令 next -- 跳過一行(跨過調用) cont -- 從斷點處繼續執行 list [line number|method] -- 輸出源代碼 use(或 sourcepath)[源文件路徑] -- 顯示或更改源路徑 exclude [<類模式>, ...|「無」] -- 不報告指定類的步驟或方法事件 classpath -- 從目標 VM 輸出類路徑信息 monitor <命令> -- 每次程序中止時執行命令 monitor -- 列出監視器 unmonitor <監視器號> -- 刪除某個監視器 read <文件名> -- 讀取並執行某個命令文件 lock <表達式> -- 輸出對象的鎖信息 threadlocks [線程 ID] -- 輸出線程的鎖信息 pop -- 彈出整個堆棧,且包含當前幀 reenter -- 與 pop 做用相同,但從新進入當前幀 redefine <類 ID> <類文件名> -- 從新定義類代碼 disablegc <表達式> -- 禁止對象的垃圾回收 enablegc <表達式> -- 容許對象的垃圾回收 !! -- 重複執行最後一個命令 <n> <命令> -- 將命令重複執行 n 次 # <命令> -- 放棄(不執行) help(或 ?) -- 列出命令 version -- 輸出版本信息 exit(或 quit) -- 退出調試器 <類 ID>: 帶有軟件包限定符的完整類名 <類模式>: 帶有前導或後綴通配符 (*) 的類名 <線程 ID>: 'threads' 命令中所報告的線程號 <表達式>: Java(TM) 編程語言表達式。 支持大多數常見語法。
普通運行Java調試方式以下:tomcat
java -agentlib:jdwp=transport=dt_socket,address=localhost:8888,server=y, suspend=y Hello