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

遠(yuǎn)程debug調(diào)試入門

 更新時(shí)間:2021年06月29日 11:56:31   作者:java1234_小鋒  
這篇文章主要介紹了Eclipse的Debug調(diào)試技巧大全(總結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧嗎,希望能給你帶來(lái)幫助

1.遠(yuǎn)程DEBUG的必要性

由于部署環(huán)境的差異性,相信很多朋友都碰到過(guò)開(kāi)發(fā)環(huán)境正常測(cè)試過(guò)的功能在測(cè)試環(huán)境甚至生產(chǎn)環(huán)境下出現(xiàn)bug的情況。一般情況下,生產(chǎn)環(huán)境可以采取的手段比較單一,即通過(guò)日志的方式獲取運(yùn)行中的環(huán)境上下文,分析日志文件并嘗試重現(xiàn)bug。這會(huì)帶來(lái)的問(wèn)題還是不少的,首先,日志的分析是一項(xiàng)比較耗時(shí)的工作;其次,現(xiàn)有的日志記錄不一定能反映出問(wèn)題,你可能需要多次重復(fù)這個(gè)過(guò)程(分析日志->猜測(cè)問(wèn)題->加日志->部署->獲取日志)來(lái)慢慢逼近問(wèn)題。倘若是測(cè)試環(huán)境,我們還多了一項(xiàng)可供選擇的手段——遠(yuǎn)程調(diào)試——將程序在測(cè)試環(huán)境中以debug模式啟動(dòng),在本機(jī)使用IDEA在工程中設(shè)置斷點(diǎn)進(jìn)行調(diào)試。

2,IDEA構(gòu)建SpringBoot測(cè)試Demo

新建SpringBoot測(cè)試項(xiàng)目remote-debug,只需要web依賴支持即可;版本選用2.2.6.RELEASE(注意,別用2.5.1版本,有坑,親測(cè))

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.6.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.java1234</groupId>
	<artifactId>remote-debug</artifactId>
	<version>v1.0</version>
	<name>remote-debug</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

application.yml:

server:
  port: 80
  servlet:
    context-path: /
  tomcat:
    uri-encoding: utf-8

簡(jiǎn)單搞個(gè)TestController,提供一個(gè)Rest接口

package com.java1234.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author java1234_小鋒
 * @site www.java1234.com
 * @company Java知識(shí)分享網(wǎng)
 * @create 2021-06-12 15:37
 */
@RestController
public class TestController {

    @PostMapping("/test")
    public String test(Integer id,String name){
        System.out.println("id="+id);
        System.out.println("name="+name);
        if(id>0){
            return "success "+name;
        }else{
            return "fail";
        }
    }

}

我們啟動(dòng)項(xiàng)目,用postman測(cè)試下:

測(cè)試接口:http://localhost/test 加入Body form-data 參數(shù) id=1,name=marry,Send 測(cè)試,返回 success marry,測(cè)試OK;

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-qPf6tyol-1623688298210)(image-20210613222730931.png)]

3,測(cè)試Demo項(xiàng)目配置支持遠(yuǎn)程調(diào)試

pom.xml里配置jvmArguments參數(shù) -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n:

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<configuration>
				<jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n</jvmArguments>
			</configuration>
		</plugin>
	</plugins>
</build>

加了此配置后,打包后的項(xiàng)目發(fā)布服務(wù)器,可支持遠(yuǎn)程DEBUG;

具體參數(shù)詳解:

-Xdebug 通知JVM工作在DEBUG模式下;

-Xrunjdwp 通知JVM使用(Java debug wire protocol)運(yùn)行調(diào)試環(huán)境。該參數(shù)同時(shí)包含了一系列的調(diào)試選項(xiàng);

**transport **指定了調(diào)試數(shù)據(jù)的傳送方式,dt_socket是指用SOCKET模式,另有dt_shmem指用共享內(nèi)存方式,其中,dt_shmem只適用于Windows平臺(tái);

address 調(diào)試服務(wù)器的端口號(hào),客戶端用來(lái)連接服務(wù)器的端口號(hào);

server=y/n VM 是否需要作為調(diào)試服務(wù)器執(zhí)行;

suspend=y/n 是否在調(diào)試客戶端建立連接之后啟動(dòng) VM;

4,IDEA打包jar

我們打包jar包;

右側(cè)Maven工具,雙擊 package打包工具;

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-3t35X1S1-1623688298215)(image-20210613224738500.png)]

一般打包跳過(guò)test,可以點(diǎn)擊箭頭所指閃電圖標(biāo),這樣打包速度會(huì)快很多;

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-gjGv5k7R-1623688298218)(image-20210613224828589.png)]

打包后,在target目錄下,會(huì)生成一個(gè)jar包;我們把它復(fù)制出來(lái)即可;

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-K5FN6ULx-1623688298222)(image-20210613224918420.png)]

5,啟動(dòng)jar并且?guī)?dòng)參數(shù)支持遠(yuǎn)程調(diào)試

我們把remote-debug-v1.0.jar放D盤根目錄;

我們啟動(dòng)jar,并且支持遠(yuǎn)程DEBUG;

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar remote-debug-v1.0.jar

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-RERGHClm-1623688298225)(image-20210613225414441.png)]

啟動(dòng)OK,監(jiān)聽(tīng)socket 5005端口

6,IDEA遠(yuǎn)程DEBUG配置

IDEA要進(jìn)行遠(yuǎn)程DEBUG,需要進(jìn)行配置;

1,啟動(dòng)項(xiàng)下拉,選擇 Edit Configurations...編輯配置

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-3UGDXNMD-1623688298228)(image-20210613225801811.png)]

2,點(diǎn)擊+,選擇Remote,添加遠(yuǎn)程DEBUG配置

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-3rzwtdYm-1623688298229)(image-20210613230023399.png)]

3,添加遠(yuǎn)程DEBUG配置項(xiàng),Host和Port,配置后,點(diǎn)擊ApplyOK按鈕

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-l0edF9KU-1623688298231)(image-20210613230200362.png)]

7,IDEA遠(yuǎn)程DEBUG測(cè)試

1,打測(cè)試斷點(diǎn)

我們直接在TestController類里的test方法上打點(diǎn)斷;

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-2MqDENbp-1623688298232)(image-20210613230809384.png)]

2,選擇遠(yuǎn)程debug啟動(dòng)項(xiàng),然后點(diǎn)擊測(cè)試調(diào)試按鈕啟動(dòng);

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-HWmN2f6b-1623688298234)(image-20210613230646749.png)]

3,postman測(cè)試

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-VJrvld2D-1623688298236)(image-20210613231151240.png)]

4,成功進(jìn)入斷點(diǎn)

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-BeCKrJS3-1623688298238)(image-20210613231235544.png)]

我們走完斷點(diǎn);

5,啟動(dòng)的jar包打印信息,測(cè)試OK

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-waIbt2vf-1623688298241)(image-20210613231336792.png)]

8,eclipse遠(yuǎn)程DEBUG實(shí)現(xiàn)

1,右擊項(xiàng)目 -> Debug As -> Debug Configurations…

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-NCIa03JQ-1623688298243)(image-20210613232154571.png)]

2,找到 Remote Java Application 然后右擊 New

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-o1TZdUQg-1623688298245)(image-20210613232409021.png)]

3,配置HostPort,點(diǎn)擊Debug按鈕,即可實(shí)現(xiàn)遠(yuǎn)程DEBUG

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-pDNULzPO-1623688298248)(image-20210613232629335.png)]

9,打war包方式配置遠(yuǎn)程DEBUG

如果打的是war包,需要兩個(gè)步驟:

1.將 web 應(yīng)用部署到 Tomcat 的 webapp 目錄下

2.修改 Tomcat/bin/startup.bat 文件,在最前面加上如下代碼:

SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

總結(jié)

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Java分布式ID中Snowflake雪花算法應(yīng)用實(shí)現(xiàn)

    Java分布式ID中Snowflake雪花算法應(yīng)用實(shí)現(xiàn)

    Snowflake算法作為一種高效且易于實(shí)現(xiàn)的分布式ID生成方案,能夠很好地滿足分布式系統(tǒng)中對(duì)全局唯一ID的需求,本文就來(lái)介紹一下Java分布式ID中Snowflake雪花算法應(yīng)用實(shí)現(xiàn),感興趣的可以了解一下
    2024-07-07
  • springSecurity自定義登錄接口和JWT認(rèn)證過(guò)濾器的流程

    springSecurity自定義登錄接口和JWT認(rèn)證過(guò)濾器的流程

    這篇文章主要介紹了springSecurity自定義登陸接口和JWT認(rèn)證過(guò)濾器的相關(guān)資料,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • 基于JavaMail實(shí)現(xiàn)簡(jiǎn)單郵件發(fā)送

    基于JavaMail實(shí)現(xiàn)簡(jiǎn)單郵件發(fā)送

    這篇文章主要為大家詳細(xì)介紹了基于JavaMail實(shí)現(xiàn)簡(jiǎn)單郵件發(fā)送,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Springboot如何使用外部yml啟動(dòng)

    Springboot如何使用外部yml啟動(dòng)

    這篇文章主要介紹了Springboot如何使用外部yml啟動(dòng)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • spring boot配置讀寫分離的完整實(shí)現(xiàn)步驟

    spring boot配置讀寫分離的完整實(shí)現(xiàn)步驟

    數(shù)據(jù)庫(kù)配置主從之后,如何在代碼層面實(shí)現(xiàn)讀寫分離?所以下面這篇文章主要給大家介紹了關(guān)于spring boot配置讀寫分離的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2018-09-09
  • myBatis實(shí)現(xiàn)三級(jí)嵌套復(fù)雜對(duì)象的賦值問(wèn)題

    myBatis實(shí)現(xiàn)三級(jí)嵌套復(fù)雜對(duì)象的賦值問(wèn)題

    這篇文章主要介紹了myBatis實(shí)現(xiàn)三級(jí)嵌套復(fù)雜對(duì)象的賦值問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 詳解Java中switch的新特性

    詳解Java中switch的新特性

    這篇文章主要介紹了Java中switch的新特性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Springboot實(shí)現(xiàn)全局自定義異常的方法詳解

    Springboot實(shí)現(xiàn)全局自定義異常的方法詳解

    這篇文章主要介紹了Springboot實(shí)現(xiàn)全局自定義異常的方法詳解,SpringBoot的項(xiàng)目已經(jīng)對(duì)有一定的異常處理了,但是對(duì)于我們開(kāi)發(fā)者而言可能就不太合適了,因此我們需要對(duì)這些異常進(jìn)行統(tǒng)一的捕獲并處理,需要的朋友可以參考下
    2023-11-11
  • 一文帶你認(rèn)識(shí)Java中的Object類和深淺拷貝

    一文帶你認(rèn)識(shí)Java中的Object類和深淺拷貝

    任何變成語(yǔ)言中,其實(shí)都有淺拷貝和深拷貝的概念,Java 中也不例外,下面這篇文章主要給大家介紹了關(guān)于Java中Object類和深淺拷貝的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Spring框架學(xué)習(xí)常用注解匯總

    Spring框架學(xué)習(xí)常用注解匯總

    這篇文章主要為大家介紹了Spring框架學(xué)習(xí)中一些經(jīng)常用的注解匯總及示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10

最新評(píng)論

舒兰市| 柘城县| 大丰市| 华宁县| 泰和县| 剑阁县| 延长县| 行唐县| 浦江县| 新邵县| 长沙县| 芦山县| 峨山| 社会| 保德县| 宿松县| 青岛市| 济宁市| 雅安市| 安乡县| 绩溪县| 临海市| 北票市| 大同市| 顺平县| 河津市| 河北省| 会泽县| 博爱县| 辽中县| 正宁县| 林芝县| 四会市| 灌南县| 民权县| 达拉特旗| 新疆| 顺平县| 仁化县| 乌拉特后旗| 乌兰浩特市|