国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

同事改Bug飛快,原來掌握了這些代碼Debug技巧

開發 前端
本文主要羅列了10個常用的Debug技巧,可以讓我們定位代碼問題事半功倍。

引言

代碼Debug調試是研發工程師日常工作中必不可少的重要組成部分。進行代碼Debug調試的目的無非就兩個,一個是自我檢查代碼邏輯是否有問題,便于自己將Bug消滅在測試介入之前;另一個是進行線上問題排查定位,找到實際在跑業務的過程中出現的Bug。但是無論是哪個目的,高效率的進行代碼Debug調試必定會提高我們碼代碼的效率以及定位問題解決問題的效率,從而實現代碼白盒化自我觀測。本文主要羅列了10個常用的Debug技巧,可以讓我們定位代碼問題事半功倍。

Debug調試場景

回到上一步

進行代碼調試的過程中,有的時候由于自己點擊下一步的速度比較快,可能之前打的斷點命中后直接跳過去了進入到某個方法的內部,但是我們還是想看回頭看之前斷點中的情況,那么此時可以使用這個回到上一步功能即Drop Frame,快速定位到之前的代碼運行位置。我們都知道JVM通過棧幀保存方法調用地址的,因此實際上這部分的功能可以理解為舍棄當前的調用棧回到原來的調用處。

圖片

字段斷點

當我們需要知道類中某個屬性值到底什么時候被修改的時候,如果要從最起始的地方進行調試實在太過麻煩,因為有的時候我們可能并不知道屬性賦值的起始點到底在哪里,特別是在閱讀框架源碼的時候。那么此時可以嘗試在類的字段進行斷點,勾選上在屬性訪問或者屬性修改的時候將運行到屬性修改發生的地方或者屬性被訪問的地方,這樣可以大大提高我們找到屬性修改再沈地方被修改的效率。

圖片

Stream調試

Lambda表達式是JDK1.8的新特性,在實際的項目編碼也會被經常使用到來簡化一些循環操作的代碼。但是Lambda表達式并不好進行調試,因此不太方便查看stream流內部的值運行情況,此時我們需要借助于Java Stream Debuger這個插件,這樣我們在進行stream流debug的時候就可以看到內部各個值執行的流程以及最終結果,方便我們進行問題定位。

圖片

表達式結果查看

在進行Debug的過程中,在代碼的右側一般會默認展示一些變量當前的值,但是對于一些表達式的值并不會默認展示,而我們有的時候需要關注一下表達式在計算過程中的數據是否正確。此時便可以通過鼠標選中需要計算的代碼表達式然后結合(Alt+F8)快捷鍵查看表達式的計算結果。

圖片

debug篩選條件

在一些循環條件中,比如某個List中有100個String對象,但是我們在調試的時候希望快速找到滿足條件的對象,而不是在不關注的對象上面浪費時間進行debug,這個時候我們就可以使用debug篩選條件快速過濾出我們需要的對象,大大提升我們debug的效率。

圖片

異常斷點

進行斷點調試的時候,除了閱讀框架源碼理解技術原理或者熟悉新業務,大部分情況進行斷點調試都是出現了異常需要進一步定位具體原因。但是一般情況下當發生異常的時候,拋出來的異常要么被框架捕捉了,進入框架的源碼當中,要么被自己業務代碼中的try catch捕捉了,影響問題定位。因此我們想要當異常發生的時候可以停在拋異常的地方,方便我們進行問題定位。

1、在任意斷點處點擊鼠標右鍵進行更多debug設置,找到Java Exception Breakpoints添加自帶的Exception類型或者自定義的業務異常。

圖片

2、此時進入debug模式運行代碼,當代碼邏輯產生之前添加的異常類型后,代碼會停留在發生異常的地方,這樣異常調試就更加方便了。

圖片

遠程調試

在實際的項目開發中,經常會遇到本地調試沒毛病,但是部署到預發布環境或者生產環境中就會出現Bug的問題,這個時候我們只能通過遠程調試來具體定位問題到底是什么。

1、在debug模式配置中選擇Remote模式

圖片

2、配置遠程環境

圖片

服務以Jar形式運行

在服務啟動的時候需要增加啟動參數

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar business.jar

服務在Tomcat容器中

tomcat 的bin目錄下的catalina.sh文件中增加配置

JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'

服務在Docker容器中

需要在dockerfile配置ENTRYPOINT,也就是服務的啟動參數。

注意:

遠程調試需要確保本地代碼合遠程代碼的完全一致,否則代碼行數匹配不上無法達到調試的效果。

強制返回

我們進行debug問題排查,有的時候只是想確認業務邏輯有沒有問題,并不想真正去執行一些耗費資源、或者改變數據的操作,那么在這種場景下,我們可以借助于強制返回的功能,不執行方法后面的代碼而指定一個返回值來繼續后續的業務邏輯debug。

圖片

從運行結果可以看得出來,加法的代碼邏輯實際并沒有執行,而是通過強制返回后直接執行了后面的業務邏輯。

圖片

運行時修改變量

在debug的過程中,有時候我們需要按照我們預想的邏輯進行問題排查定位,這種場景下我們可能需要修改某些變量的值以便于代碼走入不同的預想的業務邏輯。通過Alt + F8快捷鍵修改獲取指定變量的值,右鍵Set Value設置新的值。

圖片

輸入新的變量值后進行回車設置,如此變量值被改變了,原先的業務邏輯發在條件發生改變之后也發生了改變。

圖片

多線程調試

Idea默認的Debug模式下會阻塞所有的線程,只有當當前的調試線程邏輯走完之后才會進入其他的線程。那如果想要調試多線程場景下的業務邏輯應該怎么辦呢?  實際上在設置斷點的時候,鼠標右擊斷點,我們可以選擇Thread調試模式。  

圖片

這樣我們在Debugger中就可以通過切換不同的線程來進行業務邏輯調試。

圖片

重用快捷鍵

1、F8:Step Over 程序執行到下一步

2、F7:Step Into 進入方法內部

3、 Alt+Shift+F7:強制進入方法內部,主要針對F7無法進入的方法內部的情況

4、Shift+F8:進入方法之后,不希望再一步步執行剩下的代碼,可以通過此快捷鍵跳出

圖片

5、Alt+F10:如果當前鼠標光標不在代碼運行處,通過此快捷鍵可以將光標回歸到代碼運行處

6、Alt+F9:鼠標光標在何處,可以直接通過此快捷鍵跳轉運行到光標處,無需斷點

7、Alt+F8:計算表達式的值,用鼠標選擇需要計算的表達式之后,通過此快捷鍵可以計算表達式的值

圖片

8、Ctrl+F5:比如改了某些代碼需要重新運行程序,可以使用此快捷鍵

9、F9:如果一段代碼中打了兩個斷點,當debug到第一個斷點后,按F9后代碼運行到第二個斷點處,如果再按F9則執行完所有的代碼,也就是說如果當前斷點后還有斷點則可以通過F9跳轉,如果沒有則執行完代碼邏輯。

10、Ctrl+Shift+F8:查看所有的當前所有的斷點

責任編輯:武曉燕 來源: 慕楓技術筆記
相關推薦

2020-03-08 16:58:51

Chrome瀏覽器代碼

2017-07-19 16:34:44

筆記本拆解技巧

2018-04-10 14:36:18

數據庫MySQL優化技巧

2020-11-09 07:25:20

函數 JavaScript數據

2020-10-16 09:09:56

代碼業務模型

2024-08-29 13:16:51

2025-12-04 00:35:00

2020-03-23 10:51:40

面試技巧技術

2019-09-25 09:05:52

Python 機器學習編程語言

2020-04-13 08:33:39

高并發秒殺系統

2021-12-03 11:57:27

代碼##語言

2022-07-21 14:42:33

Windows 11BUG微軟

2022-12-05 15:03:01

2023-12-31 16:23:39

KubernetesPod容器

2019-02-12 15:00:32

Javascript命令式編程前端

2019-12-24 08:46:49

Redis技巧數據量

2018-01-25 14:53:20

iPhone技巧刪除照片

2023-05-10 07:42:26

Java多線程編程

2023-12-29 14:13:41

PyTorch模型開發

2022-09-16 11:41:17

Spring代碼
點贊
收藏

51CTO技術棧公眾號

久久久久久久久亚洲| 色噜噜狠狠成人网p站| 9.1国产丝袜在线观看| a级在线观看| 中文字幕乱码久久午夜不卡| 色悠悠久久久久| 中日韩高清电影网| 一区二区三区四区亚洲| 欧美日韩激情四射| 99精品热视频只有精品10| 26uuu久久噜噜噜噜| 在线观看亚洲精品福利片| 欧美一卡二卡三卡| 色婷婷综合缴情免费观看| 久久久一区二区三区捆绑**| 日韩欧美亚洲日产国产| 亚洲精品韩国| 97国产超碰| 国产成人精品一区二区免费看京| 中文字幕久久精品| 1区2区3区在线| 日韩成人在线电影网| 91精品国产综合久久久久久豆腐| 亚洲欧美韩国综合色| 好看的日韩av电影| 在线精品视频免费播放| 国产精品美乳在线观看| 曰本人一级毛片免费完整视频| 麻豆视频在线免费观看| 肉大捧一出免费观看网站在线播放| 欧美巨乳在线| 亚洲黄色小视频在线观看| 日本视频精品一区| 国产经典一区| 蜜桃91丨九色丨蝌蚪91桃色| 欧美福利视频| 91美女片黄在线观| 成年视频在线观看| 国产特级淫片高清视频| 成人免费在线观看视频| 欧美日韩在线亚洲一区蜜芽| 看黄色免费网站| 美女在线视频一区| 中文字幕成人| 免费99视频| 国产尤物av一区二区三区| 国产精品久久色| 亚洲一区二区小说| 884aa四虎影成人精品一区| 国产69精品久久99不卡| 日产中文字幕在线精品一区 | 亚洲电影成人av99爱色| 最色在线观看| 亚洲乱码中文字幕| 爱情岛论坛亚洲首页入口章节| 丝袜美腿亚洲一区| 色成人在线视频| 视频在线观看一区| 欧美日韩一区二区三区免费看 | 日韩精品免费视频| 久久riav二区三区| 日韩av网站在线免费观看| 日韩在线免费视频| youjizz亚洲| 国产97在线|日韩| 国产精品美女| 国产精品三级久久久久久电影| 日韩精品91| 国产69精品久久久久9999| 国产精品伊人| 欧美精品第一页| www 久久久| 日韩av网站大全| 538在线视频| 91看片淫黄大片一级在线观看| 国产xxxx振车| 亚洲精品国产成人影院| 亚洲成人精品影院| av影片在线看| 91精品国产综合久久精品麻豆| 欧美夫妻性生活xx| 亚洲一区二区三区四区视频| 日av在线不卡| 亚洲精品666| 亚洲图片欧美| 中文幕一区二区三区久久蜜桃| 主播大秀视频在线观看一区二区| 菠萝蜜视频国产在线播放| 欧美中文字幕| 手机在线成人免费视频| 日韩在线观看电影完整版高清免费| 欧美videos粗暴| 欧美成人视屏| 免费在线黄网| 国产xxx69麻豆国语对白| 国产精品综合二区| 成人激情小说网站| 最近高清中文在线字幕在线观看| 日韩亚洲国产中文字幕欧美| 9l视频白拍9色9l视频| 美日韩中文字幕| 免费国产视频| 国产亚洲精品久久久久久| 日韩免费观看视频| 不卡的av在线播放| 成年人视频网站在线| 亚洲伊人精品酒店| 免费一级欧美片在线播放| 欧美最近摘花xxxx摘花| 日本一本不卡| a在线观看免费视频| 精品成人在线观看| 久久综合偷偷噜噜噜色| 国产精品区一区二区三在线播放| 一区二区三区91| 亚洲女同av| 亚洲欧美自拍另类日韩| 8x8x8国产精品| 亚洲成人一区| 欧美三级理论片| 精品日韩av一区二区| 欧美日韩中文一区二区| 欧美激情精品久久久久久小说| 亚洲国产一区二区三区| yellow在线观看网址| 国产高清一区二区三区| 欧美在线观看一区二区| 欧美freesex8一10精品| 欧美三级一级片| 在线播放国产一区中文字幕剧情欧美 | 欧美一区二区三区成人久久片| 99精品欧美一区二区三区小说| av一本久道久久波多野结衣| 一区二区在线| 色综合久久影院| 天天影视涩香欲综合网| 免费精品视频最新在线| 精品欧美一区二区三区| 成人免费毛片播放| 中文精品99久久国产香蕉| 成人性生生活性生交12| 国产精品美女久久久久久免费| 国产精品久久久久久久久晋中 | 亚洲人成伊人成综合网小说| 日日摸日日碰夜夜爽无码| 亚洲视频第一页| 一区二区在线观看网站| 亚洲高清久久久久久| 久色婷婷小香蕉久久| 亚洲国产精品精华液网站| 日韩在线伦理| 四虎成人在线视频| 欧美午夜一区二区| 亚洲成人动漫在线播放| 日韩精品免费视频| 久久精品影视| 国偷自产视频一区二区久| 粉嫩高清一区二区三区精品视频| 精品久久久91| 337p亚洲精品色噜噜狠狠| 欧美亚洲三区| 亚洲区小说区图片区qvod| 成人欧美亚洲| 一区二区三区观看| 97精品久久久| 青青青草原在线| 亚洲黄色网址在线观看| 精品小视频在线| 免费观看30秒视频久久| 亚洲精品mv| 中文字幕第100页| av成人综合网| 亚洲免费高清视频| 国产女人aaa级久久久级| 色135综合网| aa国产成人| 色婷婷成人在线| 久草热久草热线频97精品| 中文字幕亚洲欧美日韩高清| 夜色激情一区二区| 奇米影视一区二区三区小说| 性色av一区二区三区免费| 57pao成人永久免费视频| 欧美疯狂xxxx大交乱88av| 日韩视频在线你懂得| 欧美精品久久天天躁| 国语自产精品视频在线看抢先版图片| 国产精品永久免费视频| 精品国产乱码久久久久久郑州公司| 精品福利影视| 日本高清不卡一区二区三| 欧美人体视频xxxxx| 欧美一站二站| 日本一区二区在线不卡| 国产免费观看久久| 国产成人精品一区二区免费看京 | 久久久久久久久久亚洲| 久久精品国产69国产精品亚洲| 亚洲欧美中文日韩在线v日本| 日韩视频免费直播|