1. 程式人生 > >Idea遠程調試

Idea遠程調試

intel 服務端 resolved s/4 下拉框 定義 har ima down

註:遠程調試慎用,本地調試時打的調試斷點可能導致其它同事使用測試環境時出現問題

文章目錄
  1. 使用特定JVM參數運行服務端代碼
  2. 本地連接遠程服務器debug端口
  3. 啟動debug模式
  4. 設置斷點,開始調試
對於分布式系統的調試不知道大家有什麽好的方法。對於我來說,在知道遠程調試這個方法之前就是在代碼中打各種log, 然後重新部署,上線,調試,這樣比較費時。今天咱們來了解了解Java遠程調試這個牛逼的功能, 本文以Intellij IDEA為例講解怎麽使用遠程調試。 服務端程序運行在一臺遠程服務器上,我們可以在本地服務端的代碼(前提是本地的代碼必須和遠程服務器運行的代碼一致)中設置斷點, 每當有請求到遠程服務器時時能夠在本地知道遠程服務端的此時的內部狀態。 下面按照步驟介紹怎麽遠程debug。 使用特定JVM參數運行服務端代碼
要讓遠程服務器運行的代碼支持遠程調試,則啟動的時候必須加上特定的JVM參數,這些參數是:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=12012
其中的address是用戶自定義的,為debug端口,本例以12012端口為例。 在發布中心配置環境(註意要開啟端口的訪問防火墻) 技術分享圖片 本地連接遠程服務器debug端口 打開Intellij IDEA,在頂部靠右的地方選擇”Edit Configurations…”,進去之後點擊+號,選擇”Remote”, 按照下圖的只是填寫紅框內的內容,其中host為遠程代碼運行的機器的ip/hostname, port為上一步指定的address,本例是12012 技術分享圖片
然後點擊Apply,最後點擊OK即可 啟動debug模式 現在在上一步選擇”Edit Configurations…”的下拉框的位置選擇上一步創建的remote的名字,然後點擊右邊的debug按鈕(長的像臭蟲那個), 看控制臺日誌,如果出現類似“Connected to the target VM, address: ‘xx.xx.xx.xx:12012’, transport: ‘socket’”的字樣, 就表示連接成功過了。 技術分享圖片 設置斷點,開始調試 遠程debug模式已經開啟,現在可以在需要調試的代碼中打斷點了,比如: 技術分享圖片 如圖中所示,如果斷點內有√,則表示選取的斷點正確。 現在在本地發送一個到遠程服務器的請求,看本地控制臺的bug界面,劃到debugger這個標簽,可以看到當前遠程服務的內部狀態(各種變量)已經全部顯示出來了, 並且在剛才設置了斷點的地方,也顯示了該行的變量值。 技術分享圖片
技術分享圖片

Idea遠程調試