最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Intellij IDEA調(diào)試技巧的深入講解

 更新時間:2019年08月01日 08:30:28   作者:good_andyxu  
這篇文章主要給大家介紹了關(guān)于Intellij IDEA調(diào)試技巧的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

程序員的日常工作除了寫代碼之外,很大一部分時間將會在查找 BUG,解決問題。查找 BUG,離不開在 IDE 中調(diào)試代碼。熟練的掌握調(diào)試技巧,可以幫助我們減少查找時間,快速定位問題。

在 IDEA 中調(diào)試代碼很方便,只要開啟調(diào)試,在相應(yīng)代碼處使用斷點,然后進行相應(yīng)調(diào)試即可。正是因為只要掌握這幾個功能,就可以調(diào)試代碼,所以在很長一段時間內(nèi),不了解其他調(diào)試技巧。后續(xù)深入使用 IDEA 過程中,不斷學會 IDEA 其他調(diào)試技巧,很大程度上加快調(diào)試速度。

Step 系列按鈕

日常調(diào)試的過程中為了為了找到程序的bug,通常需要單步調(diào)試,一步一步跟蹤程序執(zhí)行的流程,根據(jù)變量的值,找到最終原因。

IDEA 中提供一系列 Step 功能按鈕用于單步調(diào)試,可以在 Run 菜單欄找到全部 Step 功能。

另外在調(diào)試窗口也可以找到,不過這里只會顯示一部分常用按鈕。

調(diào)試過程中,使用頻率最高的可能就是 Setp Over。Setp Over 可以單步調(diào)試代碼,但是當碰到方法執(zhí)行時,不會進入方法內(nèi),直接調(diào)用了方法,然后到下一行。

如果需要進入方法內(nèi),需要使用 Step Into 。Step Into 可以進入調(diào)用的方法內(nèi),不過默認情情況下并不會進入 java.* 等類的方法中。如果需要進入,可以在 Setting-Stepping 中設(shè)置,排除即可。。

另外還可以使用 Force Step Into,強制進入。

當碰到一行代碼調(diào)用多個方法時,使用 Step Into 就比較蛋疼了。Step Into 會按照調(diào)用順序進入調(diào)用的方法,但是往往我們只想進入其中一個方法而已。

這種場景下我們可以使用 Smart Step Into ,選擇指定方法進入。

有些情況下,在進入一個方法后,可以使用 Setp Out,快速執(zhí)行方法,然后跳回到調(diào)用處。

另外在進入 for/while 循環(huán)里面的后,如果不在循環(huán)代碼外面打斷點出來,就需一步步隨著循壞代碼執(zhí)行結(jié)束,特別麻煩。在這里就可以使用 Setp Out Of Code Block,快速跳出循環(huán)代碼塊。

斷點使用技巧

臨時斷點

一般調(diào)試的時候,我們會在代碼行使用斷點,然后運行測試,等到程序遇到斷點暫停時,查看相關(guān)變量內(nèi)容。

在 IDEA 中,默認斷點將會一直存在。有時候僅僅想需要暫停第一次,臨時查看,這個時候我們可以使用臨時斷點。使用快捷鍵 Ctel + Alt + Shift +F8 可以快速創(chuàng)建臨時斷點或者按住 ALt,然后再創(chuàng)建斷點。。

條件斷點

有時候我們在循環(huán)處理數(shù)據(jù)的過程中,可能只關(guān)心某個條件的數(shù)據(jù),這種情況下我們使用條件斷點。

右擊斷點,彈出設(shè)置斷點屬性的窗口,我們就可以在 condition 處設(shè)置條件。IDEA 會在滿足這個條件時候,才會暫停程序。

另外設(shè)置的條件斷點樣式也會比較特殊,。

多線程斷點

在調(diào)試多線程的項目時候,如果在多個線程代碼處打上了斷點,調(diào)試的時候你會發(fā)現(xiàn),只能串行的調(diào)試。

上面多線程程序,兩個線程啟動之后,程序也許會在 thread1暫停,也許會在 thread2處暫停。只要任一個斷線暫停之后,另一處斷點線程就會被阻塞。這時只能調(diào)試完暫停處線程的斷點,才能跳到第二處斷點,調(diào)試起來非常不方便。

我們可以設(shè)置斷點線程屬性,改變這個特性。

我們可以在斷點上使用鼠標右鍵彈出斷點設(shè)置框,在 Suspend 選擇 Thread 選項。重新啟動上面的程序,然后在調(diào)試窗口 Frames 可以看到 thread1,thread2兩個線程。其中兩個線程均可進入調(diào)試,此時程序調(diào)試位于 thread1 處。這時選擇框選擇thread2,就可以調(diào)試 thread2.

另外,斷點的多線程屬性可以設(shè)置默認屬性,點擊 Make Default 按鈕,設(shè)置默認 Suspend屬性。

回退調(diào)試程序

調(diào)試的時候,有時候會進錯方法或者錯過一個方法調(diào)用過程,這個時候往往只能重新開始從頭開始執(zhí)行調(diào)試一遍。從新開始調(diào)試,可能還需要設(shè)置相關(guān)參數(shù),修改數(shù)據(jù)庫狀態(tài)等,非常麻煩。所以如果在調(diào)試過程中可以回退就可以不用重新開始。

IDEA 中可以使用 Drop Frame 與 Force Return 回退調(diào)試程序。

Drop Frame

Drop Frame 字面意思為丟棧。JVM 中使用棧幀用于進行方法調(diào)用數(shù)據(jù)結(jié)構(gòu),每次方法調(diào)用,對應(yīng)著一個棧幀在虛擬機中從入棧到出棧的過程。調(diào)用方法之后,該方法棧幀將會位于棧頂。

執(zhí)行 Drop Frame,丟棄棧頂棧幀,于是程序?qū)氐秸{(diào)用方法處。

調(diào)試上面的程序,在上面斷點處,使用 Drop Frame,就可以跳回方法調(diào)用處,即第三行。查看輸出窗口,發(fā)現(xiàn)并沒有任何輸出。

Drop Frame 可以在調(diào)試窗口欄找到。

注意與 Step Out 區(qū)別,執(zhí)行 Step Out,方法將會執(zhí)行結(jié)束之后再返回到調(diào)用處。

Force Return

Force Return 強制返回,可以在程序執(zhí)行到一半時強制返回結(jié)束程序。可以在 Frames 找到。

點擊 Force Return,可以設(shè)置返回值。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Java如何生成帶網(wǎng)站鏈接(URL)的二維碼

    Java如何生成帶網(wǎng)站鏈接(URL)的二維碼

    自從微信掃描出世,二維碼掃描逐漸已經(jīng)成為一種主流的信息傳遞和交換方式,這篇文章主要給大家介紹了關(guān)于Java如何生成帶網(wǎng)站鏈接(URL)的二維碼的相關(guān)資料,文中通過圖文實例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-07-07
  • java實現(xiàn)Base64加密解密算法

    java實現(xiàn)Base64加密解密算法

    Base64用來將非ASCII字符的數(shù)據(jù)轉(zhuǎn)換成ASCII字符的一種方法,這篇文章主要為大家詳細介紹了java實現(xiàn)Base64加密解密算法,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 深入聊一聊JDK中的Map和Set

    深入聊一聊JDK中的Map和Set

    這篇文章主要給大家介紹了關(guān)于JDK中Map和Set的相關(guān)資料,文中通過示例代碼以及圖文介紹的非常詳細,對大家學習或者使用jdk具有一定的參考學習價值,需要的朋友可以參考下
    2022-12-12
  • mybatis plus條件構(gòu)造器queryWrapper、updateWrapper

    mybatis plus條件構(gòu)造器queryWrapper、updateWrapper

    這篇文章主要介紹了mybatis plus條件構(gòu)造器queryWrapper、updateWrapper,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • SpringSecurity請求授權(quán)規(guī)則配置與注解詳解

    SpringSecurity請求授權(quán)規(guī)則配置與注解詳解

    這篇文章主要介紹了SpringSecurity請求授權(quán)規(guī)則配置與注解詳解,我們常使用@Secured與@PreAuthorize兩個注解在進入方法前進行角色、權(quán)限的控制,進入方法前數(shù)據(jù)的過濾@PreFilter注解偶爾會看到,需要的朋友可以參考下
    2023-12-12
  • 深入了解java中的逃逸分析

    深入了解java中的逃逸分析

    這篇文章主要介紹了深入了解java中的逃逸分析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • spring data jpa 查詢自定義字段,轉(zhuǎn)換為自定義實體方式

    spring data jpa 查詢自定義字段,轉(zhuǎn)換為自定義實體方式

    這篇文章主要介紹了spring data jpa 查詢自定義字段,轉(zhuǎn)換為自定義實體方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • SpringCloud升級2020.0.x版之OpenFeign簡介與使用實現(xiàn)思路

    SpringCloud升級2020.0.x版之OpenFeign簡介與使用實現(xiàn)思路

    在微服務(wù)系統(tǒng)中,我們經(jīng)常會進行 RPC 調(diào)用。在 Spring Cloud 體系中,RPC 調(diào)用一般就是 HTTP 協(xié)議的調(diào)用。對于每次調(diào)用,都要經(jīng)過一系列詳細步驟,接下來通過本文給大家介紹SpringCloud OpenFeign簡介與使用,感興趣的朋友一起看看吧
    2021-10-10
  • 關(guān)于@Value注解取不到值的幾種情況

    關(guān)于@Value注解取不到值的幾種情況

    這篇文章主要介紹了關(guān)于@Value注解取不到值的幾種情況,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java設(shè)計模式之單例模式示例詳解

    Java設(shè)計模式之單例模式示例詳解

    單例模式是最簡單也是最基礎(chǔ)的設(shè)計模式之一,單例模式確保某個類只有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例。本文將通過一些示例代碼為大家詳細介紹一下單例模式,感興趣的可以了解一下
    2021-12-12

最新評論

清苑县| 万荣县| 类乌齐县| 乃东县| 湟源县| 于田县| 巴南区| 聂拉木县| 庐江县| 南漳县| 凤城市| 芮城县| 阜阳市| 达孜县| 乌拉特后旗| 乐至县| 潮州市| 调兵山市| 庄浪县| 包头市| 曲麻莱县| 美姑县| 五峰| 昌乐县| 涟源市| 岚皋县| 佛学| 高邮市| 常山县| 鹤峰县| 台前县| 东源县| 新化县| 托里县| 犍为县| 韶山市| 桐城市| 农安县| 上杭县| 灵武市| 荃湾区|