日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

手把手教你IDEA進行遠程Debug調試的來龍去脈

來源: 責編: 時間:2023-12-13 17:02:55 274觀看
導讀一、前言我們在測試環境時,遇到一些bug,看上下文的日志,還是無法判斷出問題所在時,此時需要Debug來解決。為了更方便、更高效地定位和解決問題,遠程調試成為一種常見的實踐方式。這個還是不建議在生產中使用,可以在測試環境

gT428資訊網——每日最新資訊28at.com

一、前言

我們在測試環境時,遇到一些bug,看上下文的日志,還是無法判斷出問題所在時,此時需要Debug來解決。gT428資訊網——每日最新資訊28at.com

為了更方便、更高效地定位和解決問題,遠程調試成為一種常見的實踐方式。gT428資訊網——每日最新資訊28at.com

這個還是不建議在生產中使用,可以在測試環境走和生產一樣的單據來Debug。要是生產環境忘記去掉斷點,直接炸了!gT428資訊網——每日最新資訊28at.com

「還是不到萬不得已不要在生產使用,使用完也要把本地的斷點全部取消掉!」gT428資訊網——每日最新資訊28at.com

二、JPDA

在實戰之前,我們可以了解一下JPDA!能夠遠程Debug就是使用這個技術實現的!gT428資訊網——每日最新資訊28at.com

1、概念

JPDA(Java Platform Debugger Architecture)是 Java 平臺調試體系結構的縮寫,它是 Java 開發工具包(JDK)中提供的一組 API 和協議,用于支持 Java 程序的調試。gT428資訊網——每日最新資訊28at.com

2、核心組件

Java 虛擬機工具接口(JVMTI): JVMTI 提供了在 Java 虛擬機 (JVM) 中運行時監視和檢測的一組 API。它允許調試器在運行時獲取有關類、對象、線程等信息,并在程序執行時進行干預。gT428資訊網——每日最新資訊28at.com

Java 調試器接口(JDI): JDI 是在 JPDA 中用于編寫調試器的 Java API。它允許開發者通過 Java 語言編寫調試器,實現與 JVM 的通信和控制。gT428資訊網——每日最新資訊28at.com

Java 虛擬機調試協議(JDWP): JDWP 是 JVM 與調試器之間通信的協議。它定義了調試器如何與 JVM 進行通信,包括斷點設置、變量檢查、執行控制等。gT428資訊網——每日最新資訊28at.com

gT428資訊網——每日最新資訊28at.com

3、調試功能

斷點設置: 在代碼中設置斷點,以便在執行到特定代碼行時暫停程序的執行。gT428資訊網——每日最新資訊28at.com

變量檢查: 查看和修改程序中的變量值。 gT428資訊網——每日最新資訊28at.com

單步執行: 逐步執行程序,以便更詳細地檢查代碼的執行過程。 gT428資訊網——每日最新資訊28at.com

異常處理: 在程序拋出異常時停止執行,以進行異常處理。gT428資訊網——每日最新資訊28at.com

三、Idea實戰

非常的簡單就是運行Jar包的時候加上命令,在Idea配置上遠程調試就行了!gT428資訊網——每日最新資訊28at.com

1、Jar包準備

新建一個項目或者使用公司的項目,打成Jar包。為了模擬真實性,我們在windows里運行Jar包一次,然后上傳到虛擬機里運行一次!gT428資訊網——每日最新資訊28at.com

gT428資訊網——每日最新資訊28at.com

自己寫一個Controller,接收請求,多寫幾行方便打斷點:gT428資訊網——每日最新資訊28at.com

/** * @author wangzhenjun * @date 2023/11/28 15:54 */@RequestMapping("/test")@RestControllerpublic class TestController {    @GetMapping("/list")    public String list (){        System.out.println("======1======");        System.out.println("======2======");        System.out.println("======3======");        System.out.println("======4======");        return "成功";    }}

2、Idea配置遠程監聽

此時Idea已經把運行Jar包的命令給我們了!gT428資訊網——每日最新資訊28at.com

gT428資訊網——每日最新資訊28at.com

3、運行Jar包

找到jar所在位置,執行命令:gT428資訊網——每日最新資訊28at.com

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8088 -jar demo-0.0.1-SNAPSHOT.jar

我們來解釋一下命令的意義:gT428資訊網——每日最新資訊28at.com

-agentlib:jdwp:啟用 JDWP 調試支持。gT428資訊網——每日最新資訊28at.com

transport=dt_socket:指定 JDWP 調試器和 JVM 之間的通信方式為 socket 傳輸。gT428資訊網——每日最新資訊28at.com

transport 參數有兩種常見的模式,分別是 dt_socket 和 dt_shmem。gT428資訊網——每日最新資訊28at.com

「dt_socket:使用 socket 傳輸模式,一般用于調試服務器運行 dt_shmem:使用共享內存傳輸模式,一般用于本地調試,因為共享內存需要在同一臺物理機器上才能正常工作?!?span style="display:none">gT428資訊網——每日最新資訊28at.com

server=y:表示 JVM 將作為調試服務器運行,等待調試器連接。gT428資訊網——每日最新資訊28at.com

suspend=n:指定 JVM 在啟動后是否暫停等待調試器連接。n 表示不暫停,即 JVM 在啟動后立即執行應用程序。如果設置為 y,則 JVM 啟動后會等待調試器連接,直到調試器連接上為止。gT428資訊網——每日最新資訊28at.com

address=8088: 指定調試器連接的端口號,和Idea監聽的端口一致。gT428資訊網——每日最新資訊28at.com

我們先訪問一下,控制臺是可以打印我們的日志!gT428資訊網——每日最新資訊28at.com

gT428資訊網——每日最新資訊28at.com

4、測試

我們啟動Idea配置好的監聽,然后再打上斷點!gT428資訊網——每日最新資訊28at.com

gT428資訊網——每日最新資訊28at.com

訪問接口,成功攔截到請求!gT428資訊網——每日最新資訊28at.com

gT428資訊網——每日最新資訊28at.com

放行后,查看控制臺正常輸出:gT428資訊網——每日最新資訊28at.com

gT428資訊網——每日最新資訊28at.com

此時我們使用虛擬機里的Jar包啟動!gT428資訊網——每日最新資訊28at.com

「需要我們把Idea中的本地IP換成虛擬機的IP」gT428資訊網——每日最新資訊28at.com

gT428資訊網——每日最新資訊28at.com

重新訪問,沒有問題,我們放行后正常打??!gT428資訊網——每日最新資訊28at.com

gT428資訊網——每日最新資訊28at.com

四、總結

是不是非常的簡單,大家可以自己試一下,這里還是在測試環境玩玩就行。gT428資訊網——每日最新資訊28at.com

這種方式還有弊端,現在一般都是容器化部署,這種命令就不太好使了,感興趣的可以試試使用docker容器來發布!gT428資訊網——每日最新資訊28at.com

是不是發布完之后,把Jar包掛載出來,然后再運行一遍專門來Debug的!gT428資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-44414-0.html手把手教你IDEA進行遠程Debug調試的來龍去脈

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 怎么寫一個Maven插件來提升生產效率?

下一篇: 效率工具:Hutool 嘎嘎香,開炫了!

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 大安市| 福州市| 电白县| 乌恰县| 景洪市| 旅游| 万宁市| 涟源市| 上杭县| 同江市| 微博| 简阳市| 嘉荫县| 儋州市| 南澳县| 深水埗区| 新乡市| 正蓝旗| 湘潭市| 肇庆市| 邵阳县| 台山市| 华宁县| 金湖县| 石门县| 连城县| 扬中市| 丰镇市| 五原县| 根河市| 水富县| 高要市| 太湖县| 奇台县| 哈密市| 从化市| 闸北区| 神农架林区| 报价| 大丰市| 永顺县|