遠程debug調試原理
在本地遠程調試服務器端的代碼原理:本地和服務器端建立一個socket連接監(jiān)聽,當客戶端訪問服務器的時候,服務器端會先去問本地idea有沒有斷點蛀骇,如果有會停在當前斷點囤萤,如果沒有就返回給客戶端浑此。
缺點:1.服務器端需要開啟debug運行猴鲫,在生產環(huán)境debug會影響性能。實際使用場景有限谣殊。
1.本地端配置
在本地idea的工程中添加Edit configuration配置
在配置2中需要將jvm的參數
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
給復制下來拂共,在服務器端配置時候使用。
2.服務器端配置
首先在服務器端配置放開5005端口(阿里云或騰訊云服務器需要在安全組中放5005端口)
在服務器端我使用的是springboot直接打包的demo工程姻几。在命令行中直接使用如下命令運行
java -Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar .\demo-0.0.1-SNAPSHOT.jar
運行成功后會提示
表明服務器端已經啟動成功宜狐,開啟5005端口的監(jiān)聽。
3.實際調試
我們回到本地調試端蛇捌,在第一步的圖片配置2中我配置的remote名字是remoteTest抚恒,我們在本地idea中選擇remoteTest然后運行工程。
運行后如果沒有報錯络拌,則本地控制臺會有如下提示
Connected to the target VM, address: 'ip:5005', transport: 'socket'
然后我們在本地工程中打上斷點俭驮,客戶端請求服務器后會發(fā)現已經進入了本地idea的斷點中。