最牛逼的Java編輯器,沒有之一!

2021-02-19 Java面試寶典



前天面試了一個985高校的實習生,問了他平時用什麼開發工具,他想也沒想的說IDEA,於是我拋磚引玉的問了一下IDEA的調試用過吧,你說說怎麼設置斷點條件?那孩子懵了,想了好一會對我說沒用過,甚至都沒聽說過這個。

作為一名資深的老司機,IDEA調試可以說是家常便飯,如果不會debug,我都不信你讀過源碼,就別和我說原理了,直接pass掉。


IDEA的Debug運行模式如下圖:


以Debug模式啟動服務,左邊的一個按鈕則是以Run模式啟動。在開發中,我一般會直接啟動Debug模式,方便隨時調試代碼。 

斷點:在左邊行號欄單擊左鍵,或者快捷鍵Ctrl+F8 打上/取消斷點,斷點行的顏色可自己去設置。 

Debug窗口:訪問請求到達第一個斷點後,會自動激活Debug窗口。如果沒有自動激活,可以去設置裡設置。

調試按鈕:一共有8個按鈕,調試的主要功能就對應著這幾個按鈕,滑鼠懸停在按鈕上可以查看對應的快捷鍵。

服務按鈕:可以在這裡關閉/啟動服務,設置斷點等。 

方法調用棧:這裡顯示了該線程調試所經過的所有方法,勾選右上角的[Show All Frames]按鈕,就不會顯示其它類庫的方法了,否則這裡會有一大堆的方法。 

Variables:在變量區可以查看當前斷點之前的當前方法內的變量。 

  Watches:查看變量,可以將Variables區中的變量拖到Watches中查看。



在調試過程中往往需要觀察變量的變化來判斷業務邏輯,我們可以在以下的四個地方觀察。

最常用的變量的觀察區域variables

IDEA中最人性化的地方之一,會將變量的值陰影顯示在變量的後面。

watch區域,眼鏡的形狀,一般不會展開。如下圖:

點擊'+'號可以新增需要觀察的變量,點擊'-'號可以刪除。

滑鼠懸停在變量上也會出現變量的值,點擊展開即可查看。



在調試業務邏輯的時候一般總會遇到某個條件或者某個變量的計算值的還不知道的情況下就需要判斷下一行代碼,那麼此處就需要用到計算表達式的功能。計算表達式有兩種方法,如下:

選擇需要計算的代碼,滑鼠右鍵---->Evaluate Expression--->Evaluate即可計算。

直接點擊計算器形狀控制項即可彈出計算的窗口,將代碼複製進去即可,注意複製進去的代碼一定要符合邏輯,比如局部變量一定要是已經聲明的。


對於新手要看Spring源碼的話,再遇到調試UserService的doGetBean的方法時可能要崩潰,因為doGetBean在容器啟動的時候可能會被調用幾十次,你把斷點打在doGetBean方法體中能讓你生不如死。

1. 設置斷點條件有兩種方式:

直接在斷點上右鍵,添加condition條件即可。

view breakpoints(ctrl+shift+F8)顯示所有的斷點,在condition中添加條件即可。

2. 異常斷點設置的方式


設置了異常斷點後,比如空指針異常,在程序出現需要攔截的異常時會自動定位到指定的行。如下圖:


① ctrl+shift+F8顯示所有斷點,點擊+號添加Java Exception Breakpoints。

debug運行,一旦有代碼出現該異常,會自動定位到指定代碼。




通常我們在調試的時候,一個請求過來被攔截了,此時想要發起另外一個請求是無法重新發的,因為另外一個請求被阻塞了,只有當前線程執行完成之後才會走其他的線程。在IDEA中可以改變一下阻塞級別,有兩種方法:

1. 斷點上右鍵--->選擇Thread---->Make Default,如下圖:



2. 顯示所有斷點(crtl+shift+F8),選中某一個斷點,選擇Thread,Make Default即可。如下圖:


設置了阻塞級別,此時就可以在線程切換了,如下圖:


這是IDEA 2018年加入的新功能,可以直接在調試中拋出指定的異常。使用方法跟上面的棄棧幀類似,右擊棧幀並選擇Throw Exception,然後輸入拋異常的代碼,比如throw new NullPointerException,操作如下圖:

這是IDEA2015版時增加的功能,類似上面的手動拋異常,只不過是返回一個指定值罷了。使用方法跟上面也都類似,右擊棧幀並選擇Force Return,然後輸入要返回的值即可。如果是void的方法那就更簡單了,連返回值都不用輸。如下圖:

完!

相關焦點

  • VSCode 6 月 Java 更新,編輯器就該有編輯器的樣子
    同時,該操作還會考慮到 java.codeGeneration.generateComments 首選項,並使用它來決定是否為 getter 和 setter 方法生成注釋。 官方表示,VSCode 是一個輕量級的編輯器,儘管添加了越來越多的功能,但仍然希望它有編輯器的樣子。調試器更新這一部分的更新內容,包括幾個方面:
  • 最官方的PDF編輯器及教程!
    今天給大家介紹最官方的
  • Effective java 中文版 PDF
    這本《Effective java》是必不可少的一本,豆瓣評分高達9.8分,文末有獲取方式。《Effective Java》第三版一共包含了 90 條極具實用價值的經驗規則,每條規則都值得 Java 程式設計師在實戰中去參照。
  • Java程式設計師常用的軟體
    (2)IntelliJ IDEAIDEA 全稱 IntelliJ IDEA,是java語言開發的集成環境,IntelliJ在業界被公認為最好的java開發工具之一,尤其在智能代碼助手、代碼自動提示、重構、J2EE支持、Ant、JUnit、CVS整合、代碼審查、 創新的GUI設計等方面的功能可以說是超常的。
  • Java 泛型詳解-絕對是對泛型方法講解最詳細的,沒有之一
    本文參考java 泛型詳解、Java中的泛型方法、 java泛型詳解概述泛型在java中有很重要的地位,在面向對象編程及各種設計模式中有非常廣泛的應用。什麼是泛型?為什麼要使用泛型?泛型,即「參數化類型」。一提到參數,最熟悉的就是定義方法時有形參,然後調用此方法時傳遞實參。那麼參數化類型怎麼理解呢?
  • Java資料庫連接性簡介
    JDBC在1997年作為JDK 1.1的一部分發布,是為Java持久層開發的首批組件之一。本文提供了JDBC的概述,然後是使用JDBC API將Java客戶端與輕量級關係資料庫SQLite連接的動手入門。
  • 零基礎學習初識Java筆記
    在當前目錄下 輸入 javac 文件名.java,這是編譯5.java 文件名,這是運行javac 是編譯命令java 是運行命令javac HelloWorld.java 會把HelloWorld.java 這個文件
  • 阿里Arthas工具在做Java應用診斷上真牛逼!入門教程趕緊學起來!
    由於公眾號文章推送規則的改變,大家能準時收到我們的文章推送,請將公眾號: JAVA程式語言 設為星標~這樣就不會錯過每一篇精彩的推送啦~原文: https://jitwxs.cn/a64edcb1.html早就聽聞阿里開源的 Arthas 在做 Java 應用診斷上十分牛逼
  • CGLib首頁、文檔和下載 - Java動態代理 - OSCHINA - 中文開源技術...
    cglib大名在java界如雷貫耳,眾多優秀的開源項目均使用其來實現各自的功能(spring aop,hibernate等等),這裡主要簡單介紹一下cglib的使用,對比一下java原生的proxy還有javaassist. 說到cglib第一印象就是動態代理(啥是動態代理?
  • 現在學java的都是傻子?
    身為程式設計師的小編看完之後只能笑笑不說話:第一,說出這個問題的人應該是一個剛入門的新手,估計是剛看完java相應的知識不久,小編這裡想說的是java只是一門語言,是一門基礎性的語言,重點在基礎兩個字,現在來說應用的相對較廣,知識點就那麼多,但在應用上就會變得很多,有很多東西可能你還沒學到,算法?框架?
  • java基礎之一:認識程序和java
    程序的概念:指令集合程式語言:寫程序的工具java:程式語言中的一種,簡單好學,功能強大。。。如何開發java安裝jdk,通過記事本編寫,然後進入DOS控制臺,用javac編譯,java執行。。。通過程序可以得到源程序,這個過程叫反編譯,通過 jad,參考http://java-decompiler.github.io/java程序的基本結構:花括號包裹注意分號
  • 第一天 Java基礎入門【悟空教程】
    由硬體系統和軟體系統所組成,沒有安裝任何軟體的計算機稱為裸機。1.2 計算機應用的領域(了解)1.2.1 科學計算科學計算也稱數值計算。計算機最開始是為解決科學研究和工程設計中遇到的大量數學問題的數值計算而研製的計算工具。例如,人造衛星軌跡的計算,房屋抗震強度的計算,火箭、宇宙飛船的研究設計都離不開計算機的精確計算。
  • 【第11章:Java常用類庫】_Math與Random類
    main(String args[]){              System.out.println("求平方根:" + Math.sqrt(9.0)) ;              System.out.println("求兩數的最大值:" + Math.max(10,30)) ;              System.out.println("求兩數的最小值
  • 如何使Java程式設計師擁有高效率的開發環境
    java程式設計師都知道,第一節課就會教你安裝jdk。jdk是java開發工具包,包含了jvm虛擬機,你寫的java代碼就是通過jdk編譯運行的。java開發工具一般比較流行的有eclipse,前幾年也還有用myeclipse的。現階段IntelliJ IDEA應該算是最流行的。很多程式設計師喜歡IntelliJ IDEA的黑色界面的炫酷風格。
  • Vim,牛逼
    來吧,下定決心擁抱它,沒有比它更好的文本編輯器了,非常地難學,但卻不可思議地好用。01、初識 VimVim 有著悠久的歷史。80 年代末,布萊姆·米勒在一個開源的 vi(更早的一種計算機文本編輯器,我記得有個讀者的網名就叫這個)基礎上開發了 Vim 1.0 版本。
  • 《孤島驚魂5》地圖編輯器重現美劇《迷失》中的孤島
    近日,國外有一位牛逼網友「Un-Break-Able」用《孤島驚魂5(Far Cry 5)》的強大的地圖編輯器還原了美劇《迷失》中的神秘孤島,讓我們一起來看看視頻吧!當然了,「Un-Break-Able」的工作並沒有完全還原出《迷失》中的神秘孤島,因為那個孤島實在太大,《孤島驚魂5》的地圖編輯器還沒那麼強大。
  • 5款新手常用的java編程工具,有你正在用的嗎?
    下面是運行java時真正工作的四個文件夾:bin、include、lib、jrebin:是最重要的是編譯器包括:java和jvm與頭文件lib:類庫jre:java運行時環境的交互一般用於java程序的開發,而jre只運行類而不編譯函數。其他IDE(如eclipse、IDEA)在JDK bin目錄中有自己的編譯器而不是自己的編譯器,因此在安裝時,您會發現它們只需要選擇jre路徑就可以了。
  • 一個Java高級工程師的進階之路
    工具與在《如何成為java初級程式設計師》裡提到的不同,您在這個階段可能接觸到不同的工具了,儘管您還需要使用JB或者IDEA,但能可能對ROSE,Together要多了解一些,因為您要畫UML了。不要再對Dreamweaver等HTML編輯器情有獨鍾了,那些JSP頁面讓初級程式設計師 去寫吧微觀方面1.Core Java部分這是最基礎的,對於一個java高級開發/設計人員,你需要對這一部分達到精通的水平,重點內容如下:a.面向對象編程思想(封裝繼承多態接口)b.字符串處理c.java.lang包,java.util
  • 一位Java程式設計師的實際工作情況【面對需求的溝通,問題的解決,值得收藏】
    先簡單描述一下:這是一個在線文件編輯器。同一份文件,一個人在讀的時候,其他人不能寫;同理,一個人在寫的時候,其他人也不能讀。也就是說,要麼讀,要麼寫,這兩件事情不能同時進行。項目經理跟客戶講,「這個很容易實現的,我們是可以做的。」。
  • 5款最受Python開發者歡迎的Python IDE和代碼編輯器
    5個Python IDE和文本編輯器的比較在本文中,我們將介紹5個熱門的Python IDE和5個Python文本編輯器。根據您的領域,價格和功能-您將看到最適合您的Python IDE和代碼編輯器。分不清是使用Eclipse這樣的IDE,還是應該使用Sublime文本這樣簡單的東西?