日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

springboot设置默认值_线上Bug无法复现?老司机教你一招,SpringBoot远程调试不用愁!...

發(fā)布時(shí)間:2025/3/8 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springboot设置默认值_线上Bug无法复现?老司机教你一招,SpringBoot远程调试不用愁!... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

  • 在部署線上項(xiàng)目時(shí),相信大家都會(huì)遇到一個(gè)問(wèn)題,線上的 Bug 但是在本地不會(huì)復(fù)現(xiàn),多么無(wú)奈。
  • 此時(shí)最常用的就是取到前端傳遞的數(shù)據(jù)用接口測(cè)試工具測(cè)試,比如 POSTMAN,復(fù)雜不,難受不?
  • 今天陳某教你一招,讓你輕松調(diào)試線上的 Bug。文章目錄如下:

什么是 JPDA?

  • JPDA(Java Platform Debugger Architecture),即 Java 平臺(tái)調(diào)試體系,具體結(jié)構(gòu)圖如下圖所示。

  • 其中實(shí)現(xiàn)調(diào)試功能的主要協(xié)議是JDWP協(xié)議,在Java SE 5以前版本,JVM 端的實(shí)現(xiàn)接口是JVMPI(Java Virtual Machine Profiler Interface),而在Java SE 5及以后版本,使用JVMTI(Java Virtual Machine Tool Interface) 來(lái)替代 JVMPI。

  • 因此,如果使用 Java SE 5 之前版本,使用調(diào)試功能的命令為:

java?-Xdebug?-Xrunjdwp:...
  • 而Java SE 5及之后版本,使用調(diào)試功能的命令為:
java?-agentlib:jdwp=...

調(diào)試命令

  • 現(xiàn)在開發(fā)中最常見(jiàn)的一條遠(yuǎn)程調(diào)試的的命令如下:
java?-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9091?-jar?xxx.jar

參數(shù)說(shuō)明

  • 基于前面的調(diào)試命令,我們來(lái)分析一下基本的參數(shù)代表什么意思。

transport

  • 指定運(yùn)行的被調(diào)試應(yīng)用和調(diào)試者之間的通信協(xié)議,它由幾個(gè)可選值:
  • dt_socket:主要的方式,采用socket方式連接。
  • dt_shmem:采用共享內(nèi)存方式連接,僅支持 Windows 平臺(tái)。
  • server

    • 指定當(dāng)前應(yīng)用作為調(diào)試服務(wù)端還是客戶端,默認(rèn)為n。
    • 如果你想將當(dāng)前應(yīng)用作為被調(diào)試應(yīng)用,設(shè)置該值為y,如果你想將當(dāng)前應(yīng)用作為客戶端,作為調(diào)試的發(fā)起者,設(shè)置該值為n。

    suspend

    • 當(dāng)前應(yīng)用啟動(dòng)后,是否阻塞應(yīng)用直到被連接,默認(rèn)值為y。
    • 在大部分的應(yīng)用場(chǎng)景,這個(gè)值為n,即不需要應(yīng)用阻塞等待連接。一個(gè)可能為y的應(yīng)用場(chǎng)景是,你的程序在啟動(dòng)時(shí)出現(xiàn)了一個(gè)故障,為了調(diào)試,必須等到調(diào)試方連接上來(lái)后程序再啟動(dòng)。

    address

    • 暴露的調(diào)試連接端口,默認(rèn)值為8000。
    • 此端口一定不能與項(xiàng)目端口重復(fù),且必須是服務(wù)器開放的端口。

    onthrow

    • 當(dāng)程序拋出設(shè)定異常時(shí),中斷調(diào)試。

    onuncaught

    • 當(dāng)程序拋出未捕獲異常時(shí),是否中斷調(diào)試,默認(rèn)值為 n。

    launch

    • 當(dāng)調(diào)試中斷時(shí),執(zhí)行的程序。

    timeout

    • 該參數(shù)限定為java -agentlib:jdwp=…可用,單位為毫秒ms。
    • 當(dāng)suspend = y時(shí),該值表示等待連接的超時(shí);當(dāng)suspend = n時(shí),該值表示連接后的使用超時(shí)。

    參考命令

  • -agentlib:jdwp=transport=dt_socket,server=y,address=8000:以 Socket 方式監(jiān)聽(tīng) 8000 端口,程序啟動(dòng)阻塞(suspend 的默認(rèn)值為 y)直到被連接。

  • -agentlib:jdwp=transport=dt_socket,server=y,address=localhost:8000,timeout=5000:以 Socket 方式監(jiān)聽(tīng) 8000 端口,當(dāng)程序啟動(dòng)后 5 秒無(wú)調(diào)試者連接的話終止,程序啟動(dòng)阻塞(suspend 的默認(rèn)值為 y)直到被連接。

  • -agentlib:jdwp=transport=dt_shmem,server=y,suspend=n:選擇可用的共享內(nèi)存連接地址并使用 stdout 打印,程序啟動(dòng)不阻塞。

  • -agentlib:jdwp=transport=dt_socket,address=myhost:8000:以 socket 方式連接到myhost:8000上的調(diào)試程序,在連接成功前啟動(dòng)阻塞。

  • -agentlib:jdwp=transport=dt_socket,server=y,address=8000,onthrow=java.io.IOException,launch=/usr/local/bin/debugstub:以 Socket 方式監(jiān)聽(tīng) 8000 端口,程序啟動(dòng)阻塞(suspend 的默認(rèn)值為 y)直到被連接。當(dāng)拋出 IOException 時(shí)中斷調(diào)試,轉(zhuǎn)而執(zhí)行usr/local/bin/debugstub程序。

  • IDEA 遠(yuǎn)程調(diào)試示例

    • 首先打包 SpringBoot 項(xiàng)目,在服務(wù)器上運(yùn)行,執(zhí)行以下命令:
    java?-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9190?-jar?debug-demo.jar
    • 出現(xiàn)下圖的界面,表示運(yùn)行成功:

    • 然后在 IDEA 中,點(diǎn)擊Edit Configurations,在彈框中點(diǎn)擊+號(hào),然后選擇Remote。

    • 填寫服務(wù)器的地址及端口,點(diǎn)擊 OK 即可。

    • 配置完畢后,DEBUG 調(diào)試運(yùn)行即可。

    • 配置完畢后點(diǎn)擊保存即可,因?yàn)槲遗渲玫?suspend=n,因此服務(wù)端程序無(wú)需阻塞等待我們的連接。我們點(diǎn)擊 IDEA 調(diào)試按鈕,當(dāng)我訪問(wèn)某一接口時(shí),能夠正常調(diào)試。

    點(diǎn)我必發(fā)大財(cái) 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的springboot设置默认值_线上Bug无法复现?老司机教你一招,SpringBoot远程调试不用愁!...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。