通常,線上的程序出現問題我們需要排查時,我們的方案都是通過查看日志或者在本地運行同樣的代碼debug進行調試。但由於環境問題往往排查的過程不是很順利。在這里告訴大家如何通過idea在本地對線上的程序進行遠程調試,只要有源代碼,並且啟動項目時做好配置,就可以在本機直接遠程調試服務器上的代碼。步驟如下:
1.項目啟動時,添加以下參數,允許遠程調試:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=${debug_port}
其中${debug_port}是用戶自定義的,為debug端口本地連接遠程debug端口。
注意:遠程調試從技術上講,就是在本機與遠程建立scoket通訊,所以端口不要沖突,而且本機要允許訪問遠程端口
否則會出現以下錯誤信息
2.配置idea
edit configurations + remote
host處填寫遠程服務器的iP,端口填寫debug 端口,如果包含多個module,可以選擇要運行的module的名字
3.測試
1.我們這里有一個springboot項目jar包
2.執行以下命令運行jar包
java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8011 test-remote.jar
同樣也可以用以下命令后台啟動項目
nohup java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8011 test-remote.jar >/null 2>&1 &
3.配置好idea,debug啟動
4.這樣就說明已經啟動成功,我們可以直接在本地需要調試的地方打斷點,然后訪問線上的接口查看調試結果
5.可以發現,成功在本地進行遠程調試。
END