91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

IntelliJ IDEA如何遠程連接Debug Linux上的Java程序

發布時間:2020-11-04 18:02:51 來源:億速云 閱讀:823 作者:Leah 欄目:開發技術

本篇文章給大家分享的是有關IntelliJ IDEA如何遠程連接Debug Linux上的Java程序,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

1 前言

我們習慣于在本地開發的時候debug,能快速定位與解決問題,那部署在服務器上是不是就沒有辦法了呢?只能通過查看日志來定位?

不是的,在遠端的服務器上,我們一樣可以debug

2 IDEA的debug

我們先來看一下在IntelliJ IDEA直接debug是怎樣的。

先準備一個簡單的Java程序:

package com.pkslow.basic;
import java.util.Map;

public class RemoteDebug {
 public static void main(String[] args) {
 System.out.println("------------------start------------------");
 
 System.out.println("get all the system environment");
 Map<String, String> envs = System.getenv();

 System.out.println("\nprint out the contains `HOME`");
 System.out.println("------env HOME------");
 envs.entrySet().stream()
 .filter(env -> env.getKey().contains("HOME"))
 .forEach(env -> {
 System.out.println(env.getKey() + ":" + env.getValue());
 });

 System.out.println("------------------end------------------");
 }
}

功能很簡單,獲取所有系統環境變量,并打印出含有HOME字段的。

Debug很簡單,直接點擊以下按鈕就可以:

IntelliJ IDEA如何遠程連接Debug Linux上的Java程序

相信大家都知道這一點,但應該很多人都不會注意,IDEA究竟做了什么,為什么就可以調試了呢?我們看一下控制臺的日志就明白了:

/Library/Java/JavaVirtualMachines/jdk1.8.0_212.jdk/Contents/Home/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:59313,suspend=y,server=n -javaagent:/Users/pkslow/Library/Caches/IntelliJIdea2019.3/captureAgent/debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "/Library/Java/JavaVirtualMachines/jdk1.8.0_212.jdk/Contents/Home/jre/lib/charsets.jar:" com.pkslow.basic.RemoteDebug

簡化一下,不重要的參數去掉:

java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:59313,suspend=y,server=n com.pkslow.basic.RemoteDebug

這就是可以Debug的原因,利用了Java Agent原理。這個功能很強大,類似一個AOP,代理了Java程序,可以利用它進行調試、熱部署等。

3 調試本地程序

我們先試試如何可以調試本地程序,不是直接在IDEA上調試。先要編譯出class文件RemoteDebug.class,然后按package結構放好。我通過mvn clean compile來編譯。

啟動程序,在target/classes/目錄執行:

$ java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:50050,suspend=y,server=y com.pkslow.basic.RemoteDebug
Listening for transport dt_socket at address: 50050

然后程序就會等待調試客戶端的連接,不會往下執行。

配置IDEA以進行調試:

IntelliJ IDEA如何遠程連接Debug Linux上的Java程序

配置完成保存后,點擊debug就可以了:

IntelliJ IDEA如何遠程連接Debug Linux上的Java程序

程序已經進入debug模式:

IntelliJ IDEA如何遠程連接Debug Linux上的Java程序

我們已經執行到了其中一行,現在看看服務端:

IntelliJ IDEA如何遠程連接Debug Linux上的Java程序

IDEA是同步的,并且確實已經控制了服務端Java的執行。

4 遠程調試Linux Java程序

先把程序部署在Linux上:

$ scp -P 22 ./com/pkslow/basic/RemoteDebug.class root@xxx.xx.xx.xxx:/root/remoteDebug/com/pkslow/basic/
RemoteDebug.class 100% 2572 282.5KB/s 00:00 

通過以下命令在服務端啟動程序,這里調試端口改為9999,因為部分端口在遠程服務器并沒有開啟:

java -agentlib:jdwp=transport=dt_socket,address=9999,suspend=y,server=y com.pkslow.basic.RemoteDebug

本地電腦IDEA配置如下:

IntelliJ IDEA如何遠程連接Debug Linux上的Java程序

開始debug,正常控制了遠程服務端的Java

IntelliJ IDEA如何遠程連接Debug Linux上的Java程序

服務端的實時執行情況:

IntelliJ IDEA如何遠程連接Debug Linux上的Java程序

讓程序執行完如下:

$ java -agentlib:jdwp=transport=dt_socket,address=9999,suspend=y,server=y com.pkslow.basic.RemoteDebug
Listening for transport dt_socket at address: 9999
------------------start------------------
get all the system environment

print out the contains `HOME`
------env HOME------
JAVA_HOME:/root/jdk1.8.0_131
HOME:/root
------------------end------------------

以上就是IntelliJ IDEA如何遠程連接Debug Linux上的Java程序,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长宁县| 桃园县| 白银市| 自治县| 沐川县| 彰化县| 民勤县| 桃园县| 苍溪县| 盐源县| 安化县| 乌拉特后旗| 延庆县| 德江县| 孙吴县| 武定县| 岱山县| 通海县| 杭锦旗| 麻江县| 苍南县| 婺源县| 冕宁县| 河东区| 乌拉特前旗| 新邵县| 锦屏县| 罗甸县| 芮城县| 苏尼特左旗| 清丰县| 甘孜县| 百色市| 盐津县| 新蔡县| 周宁县| 尤溪县| 漳浦县| 彭水| 宜宾县| 新安县|