springboot設置默認值_線上Bug無法復現?老司機教你一招,SpringBoot遠程調試不用愁!...

4d8bceffe2fed71ccd26a7988e370f6f.png

前言

  • 在部署線上項目時,相信大家都會遇到一個問題,線上的 Bug 但是在本地不會復現,多么無奈。
  • 此時最常用的就是取到前端傳遞的數據用接口測試工具測試,比如 POSTMAN,復雜不,難受不?
  • 今天陳某教你一招,讓你輕松調試線上的 Bug。文章目錄如下:bd73efcf20cd4f1ea9f1d177ad749f9c.png

什么是 JPDA?

  • JPDA(Java Platform Debugger Architecture),即 Java 平臺調試體系,具體結構圖如下圖所示。85e9334b4a7facf05f5f610f84c62ea6.png

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

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

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

調試命令

  • 現在開發中最常見的一條遠程調試的的命令如下:
java?-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9091?-jar?xxx.jar

參數說明

  • 基于前面的調試命令,我們來分析一下基本的參數代表什么意思。

transport

  • 指定運行的被調試應用和調試者之間的通信協議,它由幾個可選值:
  1. dt_socket:主要的方式,采用socket方式連接。
  2. dt_shmem:采用共享內存方式連接,僅支持 Windows 平臺。

server

  • 指定當前應用作為調試服務端還是客戶端,默認為n
  • 如果你想將當前應用作為被調試應用,設置該值為y,如果你想將當前應用作為客戶端,作為調試的發起者,設置該值為n

suspend

  • 當前應用啟動后,是否阻塞應用直到被連接,默認值為y
  • 在大部分的應用場景,這個值為n,即不需要應用阻塞等待連接。一個可能為y的應用場景是,你的程序在啟動時出現了一個故障,為了調試,必須等到調試方連接上來后程序再啟動。

address

  • 暴露的調試連接端口,默認值為8000
  • 此端口一定不能與項目端口重復,且必須是服務器開放的端口。

onthrow

  • 當程序拋出設定異常時,中斷調試。

onuncaught

  • 當程序拋出未捕獲異常時,是否中斷調試,默認值為 n。

launch

  • 當調試中斷時,執行的程序。

timeout

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

參考命令

  1. -agentlib:jdwp=transport=dt_socket,server=y,address=8000:以 Socket 方式監聽 8000 端口,程序啟動阻塞(suspend 的默認值為 y)直到被連接。

  2. -agentlib:jdwp=transport=dt_socket,server=y,address=localhost:8000,timeout=5000:以 Socket 方式監聽 8000 端口,當程序啟動后 5 秒無調試者連接的話終止,程序啟動阻塞(suspend 的默認值為 y)直到被連接。

  3. -agentlib:jdwp=transport=dt_shmem,server=y,suspend=n:選擇可用的共享內存連接地址并使用 stdout 打印,程序啟動不阻塞。

  4. -agentlib:jdwp=transport=dt_socket,address=myhost:8000:以 socket 方式連接到myhost:8000上的調試程序,在連接成功前啟動阻塞。

  5. -agentlib:jdwp=transport=dt_socket,server=y,address=8000,onthrow=java.io.IOException,launch=/usr/local/bin/debugstub:以 Socket 方式監聽 8000 端口,程序啟動阻塞(suspend 的默認值為 y)直到被連接。當拋出 IOException 時中斷調試,轉而執行usr/local/bin/debugstub程序。

IDEA 遠程調試示例

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

  • 然后在 IDEA 中,點擊Edit Configurations,在彈框中點擊+號,然后選擇Remote60aced6928d9563a8bd4eb40a06d6423.png

  • 填寫服務器的地址及端口,點擊 OK 即可。71e2d8c70b78c382993060d5b197039f.png

  • 配置完畢后,DEBUG 調試運行即可。0f72e171f2da428efd4fd731f58302cb.png

  • 配置完畢后點擊保存即可,因為我配置的 suspend=n,因此服務端程序無需阻塞等待我們的連接。我們點擊 IDEA 調試按鈕,當我訪問某一接口時,能夠正常調試。752226be274f551123421aff52e55f82.png

88a0b61e5e2f30a5d7c4e24993eb273d.png

點我必發大財

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535074.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535074.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535074.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mybatis-Plus的分頁 樂觀鎖插件 通用枚舉 多數據源

寫在前面🛫更多知識總結見Mybatis-Plus專欄 🚕內容總結自尚硅谷楊博超老師的視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客首頁🚀🚀…

學python哪個網站好-有哪些值得推薦的Python學習網站|

現在那個網站可以學習python爬蟲? 為大家分享Python學習經驗: 1、尋找一本Python書籍,要求淺顯易懂、全面細致程較好,專注于這一本,從頭開始研究,把整本書掌握透徹。 2、找一個項目練手,熟悉基礎后&#xf…

等待的操作過時_不會過時的6種網站seo優化操作

SEO優化一直在變化,百度和谷歌的算法也在不斷的迭代更新,所以競爭永遠不會停止。今天小編就來給大家分享一下,6種不會過時的網站seo優化操作。1.保持正常優化為網站訪客提供高質量的內容、卓越的用戶體驗和安全性以及卓越的技術網站。這可能需…

java的for循環取出數據只是拿到最后一個_一問SQL優化就無從藏身?那只是你對原理的精髓掌握不深

?曾幾何時,我信誓旦旦的認為只要 SQL 寫的好,面試過程永不倒。結果在一次又一次的征途中,「最終還是以完敗落下帷幕」。結果都源于注重使用而忽略原理,從而不知也不了解「SQL」優化應如何面對。讀文的你,如今可有這樣…

SpringBoot前后端分離解決跨域問題的三種解決方案

🚀🚀扎哇太棗糕的博客首頁🚀🚀** 文章目錄🍊什么是跨域🍊跨域問題的解決策略🍊三種解決方法🍊什么是跨域 想要知道什么是跨域的話,我們可以通過一個小案例簡單了解一下跨…

ant design vue 樹形控件_官宣!vue.ant.design 低調上線

點擊右上方,關注開源中國OSC頭條號,獲取最新技術資訊官宣!官宣!官宣!是的,你沒看錯就是那個 https://vue.ant.design。至此,Ant Design 已經全面覆蓋了 React、Angular、Vue 三大前端框架&#…

哪款筆記本電腦好_掃地機器人哪個牌子好?口碑最好的掃地機器人

隨著智能家居的普及,讓我們的生活變得越來越智能。掃地機器人的出現完美解決了寵物的毛發問題,為自己騰出了大量的時間。掃地機器人絕對能提升你的生活品質,通過機器內建的智能清潔模式、自定義規劃區域進行打掃,使用手機APP進行控…

使用mybatisplus的通用枚舉實現存儲顯示相分離

狡兔尚且三窟,多學一招總沒錯吧? 🚀🚀扎哇太棗糕的博客首頁🚀🚀 🌏 拋出問題 如果讓你實現這么一個功能:將性別使用數字存儲到數據庫中,但是前端需要獲取到的是具體的性…

wifi卡慢延遲高_家里WiFi特別卡,網絡延遲高,可能不是網速的問題

原標題:家里WiFi特別卡,網絡延遲高,可能不是網速的問題隨著科技走向我們的身邊,網絡的覆蓋力度也是越來越大,相信很多人的家中都是有安裝WiFi的,然后往往在家中使用的過程中都會碰到這樣的情況,…

voc2007數據集_【目標檢測數據集】PASCAL VOC制作

【VOC20072012】數據集地址:https://pjreddie.com/projects/pascal-voc-dataset-mirror/PASCAL VOC為圖像識別和分類提供了一整套標準化的優秀的數據集,用于構建和評估用于圖像分類(Classification),檢測(O…

JDK和JRE的區別?main方法的注意點?強制和自動類型轉換?

💡涉及的知識點速通🛫 JDK和JRE傻傻分不清?🛫 HelloWorld的輸出都經歷了啥?🛫 Java的三個版本都是啥?🛫 關于main方法你都知道啥?🛫 強制and自動類型轉換都是啥?各位小…

java將date類型轉成yyyymmdd_java中的Date怎么轉換成YYYYMMDD形式?

展開全部SimpleDateFormat inSdf new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US);創建SimpleDateFormat對象的時候使用帶Locale的構e69da5e6ba9062616964757a686964616f31333365633938造參數因為你的星期和月份是用E文寫的 所以parse回來的時候自…

安卓10不支持qmc解碼_Root神器支持安卓10 面具Magisk v20.4+Magisk Manager v7.5.1

Magisk的功能和xposed框架的功能差不多,也有很多插件可安裝,而且自帶root,刷入這個Magisk后你的rom同時也就有root了(支持安卓7.0,7.1,8.0,8.1,9,10)這也是目前安裝8.1root的普遍方法,因為目前s…

centos7配置br0_Docker CentOS7 修改網絡配置與宿主機橋接

Docker CentOS7 修改網絡配置與宿主機橋接1、創建橋接物理網絡(1)新建br0橋接網絡,brctl show可以查看(需安裝bridge-utils)(2)將宿主機物理網卡IP、掩碼、網關、dns(或者dhcp)配置到br0上(3)刪除宿主機物理網卡IP、掩碼、網關、dns(或者dhcp)配置(4)將宿主機物理網…

==和equals判等、空串和null串、字符串常用API

💡涉及的知識點速通🛫 關于變量和常量你都知道啥?🛫 &和&&、|和||有什么區別?🛫 關于字符串的問題你能答對幾道?🪂 可以修改一個字符串中的值嗎?🪂 字符串使用…

倆臺電腦怎么設置同一局域網_方法 | 把手機上的照片傳到電腦上

我想把手機上的照片/視頻傳到電腦上怎么辦? 什么云盤,手機助手等等全扔到一邊去,不用。請讓我慢慢道來:現在,人們手機用的越來越多,即使在大街上,到處都是“低頭族”。但是,有好多小伙伴問&…

數據持化技術的發展演變(SQL、JDBC、mybatis)

文章目錄1 簡單SQL語句1.1 查詢1.2 新增1.3 修改1.4 刪除1.5 多表查詢2 JDBC2.1 什么是JDBC2.2 什么是jar和maven2.3 JDBC的使用2.4 JDBC總結3 mybatis3.1 什么是ORM?為什么是ORM不是JDBC?3.2 mybatis的使用3.3 mybatis總結4 mybatis與jdbc的邏輯相同處環境配置 j…

傳統蒙文字體_蒙古要改回使用傳統回鶻蒙文,這是種什么文字,蒙古為什么要改回...

喜歡就點關注吧!文字是一個國家的文化象征,也是其書面交流的主要工具,世界上的大多數國家都有自己獨特的文字,我們的鄰國蒙古也是如此,近日蒙古國實行了一場意義重大的文字改革,據新華社烏蘭巴托3月18日報道&#xff0…

三態輸出門實驗報告注意事項_數電基礎知識:各種IO輸出的類型

集電極開路(OC)集電極開路輸出的結構如圖1所示,右邊的那個三極管集電極什么都不接,所以叫做集電極開路;左邊的三極管為反相之用,使輸入為“0”時,輸出也為“0”。對于圖 1,當左端的輸入為“0”時&#xff0…

數據持久化技術——MP

文章目錄1 環境搭建1.1 創建一個maven的project1.2 pom.xml文件導入web開發依賴1.3 創建SpringBoot項目的主程序入口2 代碼生成器3 配置數據庫4 導入前端頁面5 開始前端控制器的編碼5.1 wrapper構造器mybatis-plus(簡稱 MP)是一個 MyBatis的增強工具,在 MyBatis 的基…