欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一篇文章詳解JAVA遠程debug

 更新時間:2023年08月15日 09:11:20   作者:_BugMan  
這篇文章主要給大家介紹了關(guān)于JAVA遠程debug的相關(guān)資料,日常我們debug是經(jīng)常用的,但是本地還好說,遠程debug就有點難度,需要的朋友可以參考下

1.什么是遠程debug?

遠程debug,也就是可以在本地debug遠端部署的程序,這對于定位遠端環(huán)境中的問題非常有用,之所以我們說是遠端環(huán)境,而不說是對定位生產(chǎn)環(huán)境中的bug很有用,是因為遠程調(diào)試通常在開發(fā)和測試階段使用,而不建議在生產(chǎn)環(huán)境中使用,因為可能會對性能產(chǎn)生影響。當然,在沒有辦法的時候使用遠程debug,是最高效的定位生產(chǎn)問題的手段之一。

遠程debug可以理解為一種JVM規(guī)范,當然其不是單獨的一個規(guī)范,它是屬于JDWP(Java Debug Wire Protocol)協(xié)議中的一部分,該協(xié)議定義了 Java 虛擬機(JVM)與調(diào)試器之間的交互方式。通過 JDWP,開發(fā)者可以在開發(fā)工具中設(shè)置斷點、查看變量、執(zhí)行代碼等操作,以便對運行中的 Java 程序進行調(diào)試。說直白點就是遵循了該協(xié)議的JVM,就支持debug,也支持遠程debug。

2.遠程debug普通JAVA程序

2.1.環(huán)境

  • JDK:1.8
  • 編譯器:IDEA

2.2.測試程序

這里我們寫了很簡單一個測試程序,每1秒,i自加1,然后將其打包成jar包

public static void main(String[] args) throws InterruptedException {
        int i=0;
        while (true){
            Thread.sleep(1000);
            i++;
        }
    }

我估計很多同學一下會忘了這么在IDEA中將普通java se程序如何打包成jar了,這里貼心一點,給出打包方法,用打包jar包的maven插件,指定好main入口,然后install即可:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.eryi.Test</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

2.3.程序啟動指令

要遠程debug,首先在程序啟動時就要用參數(shù)開啟遠程debug,完成參數(shù)指令如下:

  -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<host>:<port>

  • transport:指定調(diào)試信息傳輸?shù)姆绞剑话闶褂?nbsp;dt_socket。
  • server:指定是否為調(diào)試服務(wù)端,使用 y 表示是。
  • suspend:指定是否在啟動時暫停,使用 n 表示不暫停。
  • address:指定調(diào)試監(jiān)聽的主機和端口,也就是通過該端口來進行遠程debug的。

以我們上面的程序為例,完成的啟動命令為:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=127.0.0.1:5005 -jar test-1.0-SNAPSHOT.jar

啟動成功會顯示正在監(jiān)聽debug的端口:

2.4.編譯器配置

我們想要在IDEA中遠程debug,需要進行配置:

add configurations

 add new configuration—>remote

配置:

開始debug:

可以看到程序進入了斷點。

3.遠程debug JAVA Web程序

tomcat作為常用的web server為了方便使用,自然也支持了遠程debug的功能。普通java程序是用java -jar啟動,tomcat是用啟動腳本啟動,啟動腳本里記錄的就是tomcat啟動要執(zhí)行的所有命令,遠程debug也寫在里面。

Windows環(huán)境下修改start.sh,在第一行加上以下命令:

export CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=<host>:<port>,server=y,suspend=n"

Linux環(huán)境下修改start.bat,在第一行加上以下命令:

set "CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=<host>:<port>,server=y,suspend=n"

4.遠程debug spring boot程序

spring boot項目作為一個jar,是可以用java -jar然后跟參數(shù)這種啟動普通Java程序debug的方式來進行debug的,除此之外,spring boot還提供了一個更方便的遠程debug的方式,就是將參數(shù)配置在spring boot的打包插件中。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <jvmArguments>-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<host>:<port></jvmArguments>
            </configuration>
        </plugin>
    </plugins>
</build>

總結(jié)

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

相關(guān)文章

  • Java請求調(diào)用參數(shù)格式為form-data類型的接口代碼示例

    Java請求調(diào)用參數(shù)格式為form-data類型的接口代碼示例

    這篇文章主要給大家介紹了關(guān)于Java請求調(diào)用參數(shù)格式為form-data類型的接口的相關(guān)資料,文中給出了詳細的代碼示例,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Java如何使用poi導入導出excel工具類

    Java如何使用poi導入導出excel工具類

    這篇文章主要介紹了Java如何使用poi導入導出excel工具類問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 解決springboot運行出現(xiàn)錯誤:找不到或無法加載主類com.xxxx.xxxx.Application問題

    解決springboot運行出現(xiàn)錯誤:找不到或無法加載主類com.xxxx.xxxx.Application問題

    文章介紹了在服務(wù)器上運行一個未使用的Java項目時遇到的“找不到或無法加載主類”錯誤,并提供了兩種解決方法:通過Maven install或build …、Goals輸入install并跳過測試來重新構(gòu)建項目
    2024-11-11
  • 解決BeanUtils.copyProperties之大坑

    解決BeanUtils.copyProperties之大坑

    這篇文章主要介紹了解決BeanUtils.copyProperties之大坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java線程狀態(tài)運行原理解析

    Java線程狀態(tài)運行原理解析

    這篇文章主要介紹了Java線程狀態(tài)運行原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Java實現(xiàn)排隊論的原理

    Java實現(xiàn)排隊論的原理

    這篇文章主要為大家詳細介紹了Java實現(xiàn)排隊論的原理,對排隊論感興趣的小伙伴們可以參考一下
    2016-02-02
  • Spring Security6配置方法(廢棄WebSecurityConfigurerAdapter)

    Spring Security6配置方法(廢棄WebSecurityConfigurerAdapter)

    本文主要介紹了Spring Security6配置方法(廢棄WebSecurityConfigurerAdapter),就像文章標題所說的,SpringSecurity已經(jīng)廢棄了繼承WebSecurityConfigurerAdapter的配置方式,下面就來詳細的介紹一下,感興趣的可以了解一下
    2023-12-12
  • 詳解Java設(shè)計模式——迭代器模式

    詳解Java設(shè)計模式——迭代器模式

    這篇文章主要介紹了Java設(shè)計模式——迭代器模式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • java面向?qū)ο笾畬W生信息管理系統(tǒng)

    java面向?qū)ο笾畬W生信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了java面向?qū)ο笾畬W生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • java實現(xiàn)快速排序算法

    java實現(xiàn)快速排序算法

    快速排序算法是基于分治策略的另一個排序算法。其基本思想是:對輸入的子數(shù)組a[p:r],按以下三個步驟進行排序。 1) 分解(Divide)(2) 遞歸求解(Conquer) (3) 合并(Merge)
    2015-04-04

最新評論