国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用 IDEA 遠(yuǎn)程 Debug 調(diào)試,太實用了!

這篇具有很好參考價值的文章主要介紹了使用 IDEA 遠(yuǎn)程 Debug 調(diào)試,太實用了!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

使用 IDEA 遠(yuǎn)程 Debug 調(diào)試,太實用了!

背景

有時候我們需要進(jìn)行遠(yuǎn)程的debug,本文研究如何進(jìn)行遠(yuǎn)程debug,以及使用 IDEA 遠(yuǎn)程debug的過程中的細(xì)節(jié)??赐昕梢越鉀Q你的一些疑惑。

配置

遠(yuǎn)程debug的服務(wù),以springboot微服務(wù)為例(springcloud的應(yīng)該差不多,我沒研究過)。首先,啟動springboot需要加上特定的參數(shù)。

推薦一個開源免費的 Spring Boot 實戰(zhàn)項目:

https://github.com/javastacks/spring-boot-best-practice

1、IDEA設(shè)置

高低版本的 IDEA 的設(shè)置可能界面有點不一樣,我用2020.1.1的。大致上差不多,自行摸索。

IDEA打開遠(yuǎn)程啟動的springboot應(yīng)用程序所對應(yīng)的

1.選擇 Edit Configuration

使用 IDEA 遠(yuǎn)程 Debug 調(diào)試,太實用了!

2.如圖,點擊加號,選擇Remote

使用 IDEA 遠(yuǎn)程 Debug 調(diào)試,太實用了!

3.配置,詳細(xì)步驟見圖

使用 IDEA 遠(yuǎn)程 Debug 調(diào)試,太實用了!

注意:注意端口別被占用。后續(xù)這個端口是用來跟遠(yuǎn)程的java進(jìn)程通信的。

可以注意到:切換不同的jdk版本,生成的腳本不一樣

選擇 jdk1.4,則為

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=50055

這就是你為什么搜其他博客,會有這種配置的原因,其實這個配置也是可行的。但更準(zhǔn)確應(yīng)該按照下面jdk5-8的配置

選擇 jdk 5-8,則為

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=50055

選擇 jdk9以上,則為

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:50055

據(jù)說因為jdk9變得安全了,遠(yuǎn)程調(diào)試只允許本地,如果要遠(yuǎn)程,則需要在端口前配置*。

另外,關(guān)注公眾號Java技術(shù)棧,在后臺回復(fù)關(guān)鍵字:IDEA,閱讀我寫的大量 IDEA 教程。

2、啟動腳本改造

使用第一步得到的 Command line arguments for remote JVM 即可,即-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=50055

改造后的啟動腳本如下

nohup java \
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=50055 \
-jar remote-debug-0.0.1-SNAPSHOT.jar &

注意在windows中用 ^ 來進(jìn)行換行,例如

java ^
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=50055 ^
-jar remote-debug-0.0.1-SNAPSHOT.jar

說明:

1、端口可隨意自己定,未被占用的都行,但是要和IDEA里的remote中設(shè)置的端口一致!其他參數(shù)照抄。詳細(xì)的參數(shù)解釋可以參照附錄或自己搜

2、remote-debug-0.0.1-SNAPSHOT.jar 改成給你自己的 jar 包名字

3、我給的腳本是后臺運行的,如不需要后臺運行,自行去掉 nohup&

3、啟動springboot,啟動IDEA里的

使用 IDEA 遠(yuǎn)程 Debug 調(diào)試,太實用了!

IDEA 遠(yuǎn)程調(diào)試的細(xì)節(jié)

1、細(xì)節(jié)1:停在本地斷點,關(guān)閉程序后會繼續(xù)執(zhí)行嗎

如果遠(yuǎn)程調(diào)試在自己的斷點處停下來了,此時關(guān)閉IDEA中的項目停止運行,則還會繼續(xù)運行執(zhí)行完剩下的邏輯嗎?會的,這點比較不容易記住

以下面的代碼為例,在第一行停住了。然后IDEA中停掉,發(fā)現(xiàn)停掉之后控制臺還是打印了剩下的日志。

使用 IDEA 遠(yuǎn)程 Debug 調(diào)試,太實用了!

2、細(xì)節(jié)2:jar包代碼和本地不一致會怎么樣?

IDEA 里的代碼如果不和jar包的一致,會怎么樣。

結(jié)論:要保證和遠(yuǎn)程啟動的代碼一致。

否則你debug的時候的行數(shù)會對不上。報錯拋異常倒是不會。像這種還是能對得上行數(shù)的

比如你調(diào)試test1方法,test2方法在test1下面,在test2里加代碼,這樣并不影響test1中的行號,這種是可以在調(diào)試的時候準(zhǔn)確反應(yīng)行號的

3、細(xì)節(jié)3:日志打印在哪里?

日志不會打印在IDEA的控制臺上。即System.out 以及 log.info 還是打印在遠(yuǎn)程的。

@GetMapping("/test1")
public String test1() {
    System.out.println("第一行");
    System.out.println("第二行");
    log.info("log 第一行");
    log.info("log 第二行");
    return "ok";
}

4、細(xì)節(jié)4:調(diào)試時其他人會不會卡住?

遠(yuǎn)程調(diào)試的時候,打了斷點,停住后會不會導(dǎo)致頁面的請求卡住。

比如你使用遠(yuǎn)程調(diào)試,別的QA在測試這個頁面,結(jié)果他們看到的結(jié)果是怎么樣的?會卡住嗎?會的,已經(jīng)實際遇到過這種情況了。

5、細(xì)節(jié)5:本地代碼修復(fù)bug遠(yuǎn)程調(diào)用的時候

如果在遠(yuǎn)程調(diào)試過程自己發(fā)現(xiàn)了bug,本地改好后重新啟動IDEA里的項目,再到頁面調(diào)用一次,能修復(fù)嗎?不能,運行的還是遠(yuǎn)程部署的jar中的代碼

這個直接擊碎了遠(yuǎn)程頁面點一點觸發(fā)本地代碼進(jìn)行debug的夢想。如果可以的話那調(diào)試代碼就方便太多。

6、細(xì)節(jié)6:這個不算遠(yuǎn)程調(diào)試的問題,是dropframe的問題,放在這里一起講了

關(guān)于drop frame的問題,如果drop frame了重新進(jìn)行調(diào)試,會不會插入2條記錄?

如圖 userMapper.insert(eo) ,本方法沒有使用 @Transactional 修飾,mapper方法執(zhí)行過后事務(wù)會被立即提交,則庫表里多了一行記錄,如果drop frame后,再次進(jìn)行調(diào)試,再次執(zhí)行這代碼,于是又插入了一條記錄。

使用 IDEA 遠(yuǎn)程 Debug 調(diào)試,太實用了!

如果加上 @Transational 就不會有兩條記錄了,dropframe的時候事務(wù)沒被提交,再次執(zhí)行該插入代碼也不會插入2條。

關(guān)于什么是drop frame

使用 IDEA 遠(yuǎn)程 Debug 調(diào)試,太實用了!

7、細(xì)節(jié)7:跟上面一樣,是dropframe問題

如果把上述插入數(shù)據(jù)庫的邏輯,換成調(diào)用遠(yuǎn)程的接口,在dropframe后,再次執(zhí)行相同的代碼,會不會導(dǎo)致遠(yuǎn)程接口被執(zhí)行了2次?會的。

總結(jié)

好像感覺遠(yuǎn)程調(diào)試的用處也不是那么大,不能作為長期使用的調(diào)試工具。只能作為臨時調(diào)試的手段。

難點有幾個:

  • 難保證本地代碼和遠(yuǎn)程一致,而且你也很難判斷是否一致
  • 通過遠(yuǎn)程調(diào)試發(fā)現(xiàn)了bug,但是又不能立即修復(fù)后繼續(xù)調(diào)試,只能修復(fù)后部署后繼續(xù)遠(yuǎn)程調(diào)試

版權(quán)聲明:本文為CSDN博主「石頭wang」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。原文鏈接:https://blog.csdn.net/w8y56f/article/details/116493681

近期熱文推薦:

1.1,000+ 道 Java面試題及答案整理(2022最新版)

2.勁爆!Java 協(xié)程要來了。。。

3.Spring Boot 2.x 教程,太全了!

4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這才是優(yōu)雅的方式??!

5.《Java開發(fā)手冊(嵩山版)》最新發(fā)布,速速下載!

覺得不錯,別忘了隨手點贊+轉(zhuǎn)發(fā)哦!文章來源地址http://www.zghlxwxcb.cn/news/detail-664285.html

到了這里,關(guān)于使用 IDEA 遠(yuǎn)程 Debug 調(diào)試,太實用了!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • jvm開啟遠(yuǎn)程調(diào)試功能;idea遠(yuǎn)程debug

    jvm開啟遠(yuǎn)程調(diào)試功能;idea遠(yuǎn)程debug

    有時候一些問題本地調(diào)試無法復(fù)現(xiàn),這個時候可以開啟 jvm 的遠(yuǎn)程調(diào)試功能 jdk8 jdk11/17 修改 tomcat 的 bin 下的 catalina.sh 文件 把 jpda_address 對應(yīng)的 localhost:8000 改為 8000 ,意味著允許任何人訪問。 填上對應(yīng)的 ip 和端口即可,當(dāng)然要確保被連接的服務(wù)的代碼和本地是一致的,不然代

    2024年02月11日
    瀏覽(22)
  • IDEA實現(xiàn)遠(yuǎn)程Debug調(diào)試(附上Demo代碼)

    IDEA實現(xiàn)遠(yuǎn)程Debug調(diào)試(附上Demo代碼)

    ??需要準(zhǔn)備JDK1.8環(huán)境,安裝IDEA(版本不限) (1)、創(chuàng)建demo項目 1.File一New一project… 2.Maven Archetype一填寫Name一選擇jdk1.8一選擇Web一創(chuàng)建 (2)、引入依賴 參數(shù)詳解: 【-Xdebug】:通知JVM工作在DEBUG模式下。 【-Xrunjdwp】:通知JVM使用(Java debug wire protocol)運行調(diào)試環(huán)境。 【transport】:指

    2024年02月06日
    瀏覽(24)
  • IDEA 遠(yuǎn)程 Debug 調(diào)試,你可以不需要,但是要會

    IDEA 遠(yuǎn)程 Debug 調(diào)試,你可以不需要,但是要會

    遠(yuǎn)程debug真的很有用,我個人的真實經(jīng)歷就是有一次,我新開發(fā)的功能,在生產(chǎn)上沒生效,我詢問了運維多次,運維也多次確認(rèn)回復(fù)說是最新的包,又是查日志,對數(shù)據(jù),仍然沒發(fā)現(xiàn)問題,最后我就采用遠(yuǎn)程debug發(fā)現(xiàn)我新開發(fā)的代碼不存在。 所以不需要不要緊,但是要會,作

    2024年02月08日
    瀏覽(21)
  • 【ETL工具】本地環(huán)境IDEA遠(yuǎn)程DEBUG調(diào)試Flume代碼

    【ETL工具】本地環(huán)境IDEA遠(yuǎn)程DEBUG調(diào)試Flume代碼

    ???????????????? 感謝點贊和關(guān)注 ,每天進(jìn)步一點點!加油! ???????????????? 目錄 ?? 個人主頁——??個人主頁 ????? 一、問題說明 二、操作步驟 2.1 idea創(chuàng)建遠(yuǎn)程調(diào)試 Flume 自定義 HDFS-Sink,遠(yuǎn)程服務(wù)器進(jìn)行部署flume打包好后的代碼,本地監(jiān)控遠(yuǎn)程flume程序

    2024年02月08日
    瀏覽(27)
  • IDEA工具遠(yuǎn)程DEBUG調(diào)試K8S環(huán)境中的容器應(yīng)用(Java應(yīng)用)

    IDEA遠(yuǎn)程調(diào)試kubernetes環(huán)境中的容器應(yīng)用(Java應(yīng)用) 應(yīng)用場景:Java開發(fā)的項目在本地運行正常,然后將 容器運行方式的項目發(fā)布到遠(yuǎn)端服務(wù)器上線運行后,出現(xiàn)了異常情況,此時頻繁去修改代碼發(fā)布鏡像進(jìn)行問題驗證,將耗費較大的時間成本。 為了提高問題定位和代碼調(diào)試效率

    2024年02月10日
    瀏覽(27)
  • 東方通中間件使用IDEA進(jìn)行遠(yuǎn)程打debug

    東方通中間件使用IDEA進(jìn)行遠(yuǎn)程打debug

    idea配置請參考我的其他篇博客(idea 對遠(yuǎn)程服務(wù)器打debug)

    2024年02月03日
    瀏覽(32)
  • 使用IDEA進(jìn)行遠(yuǎn)程調(diào)試

    客戶端( idea 、 eclipse 等)之所以可以進(jìn)行調(diào)試,是由于客戶端 和 服務(wù)端(程序端)進(jìn)行了 socket 通信,通信過程如下: 1 、先建立起了 socket 連接 2 、將斷點位置創(chuàng)建了斷點事件通過 JDI 接口傳給了 服務(wù)端(程序端)的 VM , VM 調(diào)用 suspend 將 VM 掛起 ???????????????

    2024年02月09日
    瀏覽(22)
  • IDEA debug 斷點調(diào)試技巧

    IDEA debug 斷點調(diào)試技巧

    1、首先看下IDEA中Debug模式下的界面: ① 以Debug模式啟動服務(wù),左邊的一個按鈕則是以Run模式啟動。在開發(fā)中,我一般會直接啟動Debug模式,方便隨時調(diào)試代碼。 ② 斷點:在左邊行號欄單擊左鍵,或者快捷鍵Ctrl+F8 打上/取消斷點,斷點行的顏色可自己去設(shè)置。 ③ Debug窗口:訪

    2024年02月15日
    瀏覽(30)
  • Idea斷點調(diào)試(debug)詳解

    Idea斷點調(diào)試(debug)詳解

    打斷點: 鼠標(biāo)左鍵點擊這里就會出現(xiàn)一個紅點標(biāo)志 (有各種形狀,后續(xù)解釋),就打上了一個斷點。 啟動: 對于已經(jīng)運行過的程序,直接點擊,小蟲子就能啟動 對于沒有運行過的程序,找到程序入口(main方法)前面的三角形 ,鼠標(biāo)右鍵啟動 啟動后,當(dāng)我們的程序執(zhí)行到

    2024年02月08日
    瀏覽(24)
  • idea 對JavaScript進(jìn)行debug調(diào)試

    idea 對JavaScript進(jìn)行debug調(diào)試

    前言 : 工作中接手別人的前端代碼沒有注釋,看瀏覽器的network或者console切來切去,很麻煩,可以試試idea自帶的 javscript debug 功能。 瀏覽器中輸入url 查看debug斷點 看到斷點的變量就顯示了。 大功告成?。?/p>

    2024年02月11日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包