2015-04-12 156 views
0

我想了解遠程調試的工作原理。我需要將我的應用程序部署在Tomcat上才能正常工作嗎?更具體地說,假設我的機器上有源代碼,IntelliJ上的客戶端調試器,將代碼指令傳輸到遠程機器上的服務器調試器,或者代碼已經部署在該機器上。Tomcat和Intellij遠程調試

從我在JDA上看到的所有示例中,應用程序必須以遠程計算機上的必需選項啓動,以便客戶端調試器(前端)可以連接到該計算機上的調試器後端。

但我不清楚如何使它與容器一樣使用tomact。從我讀過的例子來看,這種情況下的應用程序似乎只能是tomcat,並且源代碼的指令會通過線路傳輸。事實上,我沒有看到任何步驟來部署應用程序。

請有人解釋一下。

回答

1

當您調試在tomcat容器內部署的應用程序時,您需要必須遠程部署您的應用程序。遠程調試調試遠程應用程序(駐留在tomcat容器內)。在intellij中看到的源代碼在調試期間不會傳輸到服務器。

您可以嘗試一些小實驗:在源代碼中添加一些行並在其上放置斷點,然後啓動遠程調試會話而不用重新部署。由於源代碼和已部署代碼之間的同步不同步,您會發現新代碼行上的斷點被intellij標記爲紅色「x」 - 這是因爲調試器無法找到這些行(按行號)在服務器上。

即使當您在intellij中的源代碼與在遠程服務器上的代碼不同時,調試實際上也可以工作並停在斷點上,只要斷點位於兩個名稱相同的類中。但是,實際運行的代碼是服務器上的代碼。

作爲一個附註,您可以在調試會話期間更改intellij中的代碼,並立即在服務器中生效(直到調試會話結束)。爲此,在調試會話正在等待斷點時,編譯已更改的類(intllij中的Ctrl + F9)。這調用了HotSwap mecahnism

1

Tomcat的遠程調試是通過以下方式啓動Tomcat一樣簡單:

/some/path$ catalina.sh jpda start 

這將啓動Tomcat默認端口上啓用遠程調試,8000很多其他的事情,包括如何改變這個端口,在FAQ中解釋。