最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java遠(yuǎn)程debug調(diào)試的操作步驟

 更新時(shí)間:2025年04月16日 09:04:05   作者:liyanchao2018  
日常項(xiàng)目中,通常我們的代碼都是部署到遠(yuǎn)程的服務(wù)器,有時(shí)線上出現(xiàn)了問題,經(jīng)常需要我們增加一些日志來排查問題,但是如果是測試環(huán)境的場景下或者我們能進(jìn)行遠(yuǎn)程調(diào)試的話,我們就可以使用遠(yuǎn)程的Debug方式進(jìn)行遠(yuǎn)程調(diào)試,下面給大家介紹一下Java遠(yuǎn)程debug調(diào)試的操作步驟

idea啟動java項(xiàng)目,debug調(diào)試遠(yuǎn)程項(xiàng)目代碼操作步驟:

1、將項(xiàng)目打成jar包,上傳服務(wù)器,使用命令啟動jar

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8889 MyApp

啟動命令解析: 這個(gè)命令使用的是主類名啟動,而非 -jar myApp.jar的方式。

1.1、解析啟動命令含義

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8889 是一個(gè)用于啟動 Java 程序并開啟遠(yuǎn)程調(diào)試功能的命令。下面為你詳細(xì)解釋該命令中各個(gè)部分的含義:

1.2、整體命令結(jié)構(gòu)

  • java:這是 Java 虛擬機(jī)(JVM)的啟動命令,用于執(zhí)行 Java 程序。
  • -agentlib:jdwp:這是一個(gè) JVM 選項(xiàng),用于加載 Java 調(diào)試線協(xié)議(Java Debug Wire Protocol,JDWP)代理庫。JDWP 是一種允許調(diào)試器與被調(diào)試的 Java 虛擬機(jī)進(jìn)行通信的協(xié)議,借助這個(gè)選項(xiàng)就能讓 JVM 支持遠(yuǎn)程調(diào)試。

1.3、JDWP 選項(xiàng)參數(shù)

  • transport=dt_socket:指定了調(diào)試器與 JVM 之間的通信傳輸方式。dt_socket 表示使用套接字(socket)進(jìn)行通信,也就是通過網(wǎng)絡(luò)來傳輸調(diào)試信息,這是最常用的傳輸方式。
  • server=y:表明當(dāng)前 JVM 會作為調(diào)試服務(wù)器。意味著它會監(jiān)聽一個(gè)指定的端口,等待外部調(diào)試器(如 IDE 中的調(diào)試工具)來連接。
  • suspend=nsuspend 參數(shù)用于控制 JVM 在啟動時(shí)是否暫停執(zhí)行。n 代表 no,即 JVM 啟動后不會暫停,會正常執(zhí)行 Java 程序,調(diào)試器可以在程序運(yùn)行過程中隨時(shí)連接進(jìn)行調(diào)試。若設(shè)置為 suspend=y,JVM 啟動后會暫停,直到調(diào)試器連接成功才會繼續(xù)執(zhí)行。
  • address=8889:指定了 JVM 監(jiān)聽的端口號。這里 JVM 會在 8889 端口上等待調(diào)試器的連接。在啟動調(diào)試器時(shí),需要配置相同的端口號,以確保調(diào)試器能夠與 JVM 建立連接。

1.4、示例場景

假設(shè)你有一個(gè)名為 MyApp 的 Java 程序,完整的啟動命令可能如下:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8889 MyApp

此命令會啟動 MyApp 程序,并開啟遠(yuǎn)程調(diào)試功能,允許外部調(diào)試器通過 8889 端口連接到該 JVM 進(jìn)行調(diào)試。

2、idea設(shè)置遠(yuǎn)程調(diào)試

idea打開java項(xiàng)目后,設(shè)置remote jvm debug,選擇項(xiàng)目模塊,host地址是jar包部署到服務(wù)器的地址,port是使用java命令啟用的等待調(diào)試器鏈接的端口。

3、執(zhí)行debug

點(diǎn)擊debug啟動項(xiàng)目,在瀏覽器上輸入:http://10.1.2.133:8889/user/findAll 在idea中findAll方法中打上斷點(diǎn),訪問這個(gè)url后,斷點(diǎn)就會收到調(diào)用,就可以debug調(diào)試項(xiàng)目了。

4、java命令啟動項(xiàng)目,使用-jar myApp.jar與主類名啟動myApp的區(qū)別:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8889 MyApp
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8889 -jar myApp.jar

解析: 服務(wù)器啟動java項(xiàng)目,可以啟動jar包或者尋找主類名啟動。

這個(gè)命令不一定非要使用 -jar xxx.jar 來指定啟動的 JAR 包。是否使用 -jar 選項(xiàng)取決于你啟動 Java 程序的方式。下面為你詳細(xì)分析不同情況:

情況一:使用主類名啟動

如果你像給出的命令 java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8889 MyApp 這樣,直接指定主類名(MyApp)來啟動 Java 程序,那么就不需要 -jar 選項(xiàng)。這種方式要求主類 MyApp 必須位于類路徑(classpath)下,JVM 會在類路徑中找到這個(gè)類并執(zhí)行其 main 方法。

情況二:使用 JAR 包啟動

當(dāng)你想通過 JAR 包來啟動 Java 程序時(shí),就需要使用 -jar 選項(xiàng)。此時(shí),你需要把 MyApp 替換為具體的 JAR 包名稱,例如:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8889 -jar myapp.jar

在這個(gè)命令里,-jar myapp.jar 告知 JVM 從 myapp.jar 這個(gè) JAR 包中尋找主類并執(zhí)行。要注意的是,這個(gè) JAR 包必須是可執(zhí)行的,也就是在其 MANIFEST.MF 文件中指定了主類。

總結(jié)

是否使用 -jar 選項(xiàng)要依據(jù)你的啟動需求來定:

  • 若主類在類路徑中,可直接指定主類名啟動,無需 -jar 選項(xiàng)。
  • 若要從 JAR 包啟動程序,則需使用 -jar 選項(xiàng)指定 JAR 包名稱。

到此這篇關(guān)于Java遠(yuǎn)程debug調(diào)試的操作步驟的文章就介紹到這了,更多相關(guān)Java遠(yuǎn)程debug調(diào)試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java設(shè)計(jì)模式之java迭代器模式詳解

    Java設(shè)計(jì)模式之java迭代器模式詳解

    這篇文章主要介紹了java迭代器模式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • Java利用AQS實(shí)現(xiàn)自定義鎖

    Java利用AQS實(shí)現(xiàn)自定義鎖

    本文主要介紹了Java利用AQS實(shí)現(xiàn)自定義鎖,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 從lombok的val和var到JDK的var關(guān)鍵字方式

    從lombok的val和var到JDK的var關(guān)鍵字方式

    這篇文章主要介紹了從lombok的val和var到JDK的var關(guān)鍵字方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Struts2學(xué)習(xí)教程之?dāng)r截器機(jī)制與自定義攔截器

    Struts2學(xué)習(xí)教程之?dāng)r截器機(jī)制與自定義攔截器

    這篇文章主要給大家介紹了關(guān)于Struts2學(xué)習(xí)基礎(chǔ)教程之?dāng)r截器機(jī)制與自定義攔截器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • java中List分頁的幾種方法介紹

    java中List分頁的幾種方法介紹

    大家好,本篇文章主要講的是java中List分頁的幾種方法介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Spring類型轉(zhuǎn)換 ConversionSerivce Convertor解析

    Spring類型轉(zhuǎn)換 ConversionSerivce Convertor解析

    這篇文章主要介紹了Spring類型轉(zhuǎn)換 ConversionSerivce Convertor的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • mybatisplus如何實(shí)現(xiàn)排序

    mybatisplus如何實(shí)現(xiàn)排序

    這篇文章主要介紹了mybatisplus如何實(shí)現(xiàn)排序問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Eclipse maven項(xiàng)目lombok安裝配置圖解

    Eclipse maven項(xiàng)目lombok安裝配置圖解

    這篇文章主要介紹了Eclipse maven項(xiàng)目lombok安裝配置圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 利用EasyPOI實(shí)現(xiàn)多sheet和列數(shù)的動態(tài)生成

    利用EasyPOI實(shí)現(xiàn)多sheet和列數(shù)的動態(tài)生成

    EasyPoi功能如同名字,主打的功能就是容易,讓一個(gè)沒見接觸過poi的人員就可以方便的寫出Excel導(dǎo)出,Excel導(dǎo)入等功能,本文主要來講講如何利用EasyPOI實(shí)現(xiàn)多sheet和列數(shù)的動態(tài)生成,需要的可以了解下
    2025-03-03
  • Java List集合返回值去掉中括號(''[ ]'')的操作

    Java List集合返回值去掉中括號(''[ ]'')的操作

    這篇文章主要介紹了Java List集合返回值去掉中括號('[ ]')的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08

最新評論

磐石市| 普陀区| 禹州市| 东港市| 乌拉特前旗| 庆城县| 英吉沙县| 云浮市| 枝江市| 广德县| 辽源市| 图木舒克市| 日土县| 青海省| 佛冈县| 西宁市| 海城市| 四川省| 泽普县| 吉安市| 盘锦市| 建阳市| 余庆县| 固原市| 莱西市| 丹寨县| 南丰县| 泗洪县| 横峰县| 高唐县| 颍上县| 德兴市| 莆田市| 安陆市| 涟水县| 抚远县| 宿州市| 尚志市| 连云港市| 郯城县| 阿鲁科尔沁旗|