java使用idea遠(yuǎn)程調(diào)試服務(wù)器代碼

  • 有時(shí)候我們調(diào)試代碼需要到遠(yuǎn)程服務(wù)器上才可以調(diào)試,比如調(diào)用微信、支付寶等支付業(yè)務(wù),普通的做法是在代碼里關(guān)鍵點(diǎn)打印日志矿瘦,通過(guò)查看遠(yuǎn)程服務(wù)器日志一步步調(diào)試,但如果沒(méi)有打印需要的日志愿卒,就需要重新修改代碼匪凡,然后重新部署到服務(wù)器再次調(diào)試,操作不太方便掘猿。
  • 解決辦法就是遠(yuǎn)程調(diào)試病游,讓你能夠像在本地調(diào)試一樣 Debug 遠(yuǎn)程服務(wù)器。
    必須保證本地代碼和服務(wù)器上運(yùn)行的代碼是一樣的稠通。

1 寫(xiě)一個(gè)簡(jiǎn)單的springboot項(xiàng)目用于演示

1.1 用idea創(chuàng)建一個(gè)新項(xiàng)目

image.png

1.2 選擇Spring Initializr,然后next

image.png

1.3 然后next

image.png

1.4 簡(jiǎn)單演示衬衬,只選spring web就行了

image.png

1.5 改了一下項(xiàng)目名,然后finish

image.png

1.6 一個(gè)springboot項(xiàng)目就創(chuàng)建完畢了

image.png

1.7 設(shè)置端口號(hào)(我的服務(wù)器是阿里云的改橘,端口需要在阿里云配置安全組滋尉,我這里設(shè)置一個(gè)可以訪(fǎng)問(wèn)的端口號(hào))

server.port=9550
image.png

1.8 寫(xiě)一個(gè)用于測(cè)試的接口(name不是必傳,用于模擬當(dāng)出現(xiàn)bug的時(shí)候調(diào)試)

package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello(@RequestParam(required = false)String name){
        return "hello," + name.toUpperCase();
    }
}
image.png

1.9 本地debug調(diào)試飞主,確保是我們想要的效果

注意控制臺(tái)打印的前兩行
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:50918,suspend=y,server=n
Connected to the target VM, address: '127.0.0.1:50918', transport: 'socket'

image.png

image.png

1.9.1 正常訪(fǎng)問(wèn)

image.png

1.9.2 錯(cuò)誤訪(fǎng)問(wèn)狮惜,不傳name

image.png

1.9.3 打斷點(diǎn),再次訪(fǎng)問(wèn)碌识,是我們想要的效果

image.png

image.png

1.10 打jar包

image.png

image.png

1.11 將jar包上傳到服務(wù)器

2 在服務(wù)器上運(yùn)行jar包

2.1 啟動(dòng)命令中需要添加jvm啟動(dòng)參數(shù)

# jdk1.5之前采用-Xdebug -Xrunjdwp,transport=dt_socket,server=y,suspend=n,address=9560
# jdk1.5之后采用-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9560 當(dāng)然上面那種也支持

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

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

2.2.1 jdwp

JDWP 是 Java Debug Wire Protocol 的縮寫(xiě)碾篡,它定義了調(diào)試器(debugger)和目標(biāo)虛擬機(jī)(target vm)之間的通信協(xié)議。Target vm 中運(yùn)行著我們要調(diào)試的 Java 程序筏餐,它與一般運(yùn)行的 JVM 沒(méi)有什么區(qū)別开泽,只是在啟動(dòng)時(shí)加載了 JDWP Agent 從而具備了調(diào)試功能。而 debugger 就是我們本地的調(diào)試器魁瞪,它向運(yùn)行中的 target vm 發(fā)送指令來(lái)獲取 target vm 運(yùn)行時(shí)的狀態(tài)和控制遠(yuǎn)程 Java 程序的執(zhí)行穆律。Debugger 和 target vm 分別在各自的進(jìn)程中運(yùn)行,他們之間通過(guò) JDWP 通信協(xié)議進(jìn)行通信导俘。

2.2.2 transport=dt_socket

表示使用socket通信協(xié)議

2.2.3 server=y

表示該JVM用于調(diào)試

2.2.4 suspend=n

表示JVM 立即執(zhí)行峦耘,不要等待調(diào)試者連接

2.2.5 address

連接的端口

3 直接訪(fǎng)問(wèn)服務(wù)器接口地址,看是否可以請(qǐng)求成功

image.png

image.png

4 idea開(kāi)啟遠(yuǎn)程調(diào)試

4.1 Edit Configurations...

image.png

4.2 點(diǎn)擊左上角?

image.png

4.3 選擇remote

image.png

4.4 設(shè)置服務(wù)器ip和端口旅薄,端口是服務(wù)器啟動(dòng)jar包時(shí)設(shè)置的address

image.png

4.5 本地idea開(kāi)啟debug,選擇剛才添加的遠(yuǎn)程配置辅髓,沒(méi)改名字,所以是unnamed

image.png

看控制臺(tái)打印可以看出已經(jīng)連接上遠(yuǎn)程

image.png

4.6 訪(fǎng)問(wèn)服務(wù)器接口

4.6.1 正常訪(fǎng)問(wèn)

image.png

image.png

4.6.2 錯(cuò)誤訪(fǎng)問(wèn)

image.png

image.png

4.7 驗(yàn)證確實(shí)是訪(fǎng)問(wèn)的遠(yuǎn)程,訪(fǎng)問(wèn)本地接口發(fā)現(xiàn)被拒絕

image.png

到此,遠(yuǎn)程調(diào)試就演示完畢了利朵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市猎莲,隨后出現(xiàn)的幾起案子绍弟,更是在濱河造成了極大的恐慌,老刑警劉巖著洼,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件樟遣,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡身笤,警方通過(guò)查閱死者的電腦和手機(jī)豹悬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)液荸,“玉大人瞻佛,你說(shuō)我怎么就攤上這事〗壳” “怎么了伤柄?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)文搂。 經(jīng)常有香客問(wèn)我适刀,道長(zhǎng),這世上最難降的妖魔是什么煤蹭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任笔喉,我火速辦了婚禮,結(jié)果婚禮上硝皂,老公的妹妹穿的比我還像新娘常挚。我一直安慰自己,他們只是感情好稽物,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布待侵。 她就那樣靜靜地躺著,像睡著了一般姨裸。 火紅的嫁衣襯著肌膚如雪秧倾。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天傀缩,我揣著相機(jī)與錄音那先,去河邊找鬼。 笑死赡艰,一個(gè)胖子當(dāng)著我的面吹牛售淡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼揖闸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼揍堕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起汤纸,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤衩茸,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后贮泞,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體楞慈,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年啃擦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了囊蓝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡令蛉,死狀恐怖聚霜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情珠叔,我是刑警寧澤俯萎,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站运杭,受9級(jí)特大地震影響夫啊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辆憔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一撇眯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧虱咧,春花似錦熊榛、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至绘沉,卻和暖如春煎楣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背车伞。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工择懂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人另玖。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓困曙,卻偏偏與公主長(zhǎng)得像表伦,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子慷丽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355