Java程式員應該知道的10個調試技巧

来源:http://www.cnblogs.com/8hao/archive/2016/03/02/5234770.html
-Advertisement-
Play Games

試可以幫助識別和解決應用程式缺陷,在本文中,作者將使用大家常用的的開發工具Eclipse來調試Java應用程式。但這裡介紹的調試方法基本都是通用的,也適用於NetBeans IDE,我們會把重點放在運行時上面。 在開始之前,推薦大家去看看Eclipse shortcuts這篇文章,它將會給你帶來很多


試可以幫助識別和解決應用程式缺陷,在本文中,作者將使用大家常用的的開發工具Eclipse來調試Java應用程式。但這裡介紹的調試方法基本都是通用的,也適用於NetBeans IDE,我們會把重點放在運行時上面。

在開始之前,推薦大家去看看Eclipse shortcuts這篇文章,它將會給你帶來很多方便。在本文中使用的是Eclipse Juno版(Eclipse 4.2),在開始前給大家提3點建議!

  1. 不要使用System.out.println作為調試工具
  2. 把所有涉及到的組件日誌級別激活並使用
  3. 使用日誌分析器來讀取日誌

1.條件斷點

如果你不知道如何添加斷點,只需點擊左邊面板(行號前面)斷點即被創建。在調試界面中,“斷點”視圖會把所有被創建的斷點列出來。我們可以給它加一個布爾條件,也就是說,該斷點會被激活並且如果布爾條件為真,就會執行該斷點,否則將會跳過往下執行。

2.異常斷點

在斷點視圖中,有一個J!標記按鈕!我們可以使用該按鈕來添加一個Java異常斷點。例如,我們想讓程式在遇到空指針異常(NullPointerException)時,仍然能繼續調試,那麼我們可以使用該按鈕來添加一個異常斷點!

3.監視點

這是一個非常好的功能,當選定的屬性訪問或修改程式時,程式會停止執行並允許進行調試。在Outline視圖中選擇一個類變數並從上下文菜單中選擇切換監視點,屬性監視點將會被創建,在斷點(Breakpoints)視圖中會把所有監視點用列表的形式顯示出來。

4.評估/檢查

按Ctrl+Shift+D或者Ctrl+Shift+I來顯示選定變數或者表達式的值。我們也可以給一個變數或表達式添加永久觀察點,當程式在調試時,這些觀察點就會在表達式視圖(Expression view)中顯示出來。

5.修改變數值

在調試過程中,我們可以修改變數值。先選好一個變數然後進入變數視圖(Variables view),根據變數類型在其對應的Value列里輸入值即可。

6.在Main函數裡面停止執行

在運行/調試設置中,編輯配置對話框中有“Main”這個選項卡,我們可以勾選“Stop in main”這個覆選框。如果選中,那麼在調試一個基於main方法的Java程式時,程式會在main方法第一行位置便停止執行。

7.環境變數

並不是在系統屬性中添加環境變數,我們可以在編輯配置對話框中很方便地進行添加。

8.Drop to Frame

這也是我最喜歡的一個功能。調試期間,可以重新跳到調用堆棧框架的開始處執行,並且變數值也會回到最初。根據回檔調整堆棧的深度,這個功能的主要用途是所有變數狀態可以快速回到方法開始執行時候的樣子,然後你可以重新進行一遍一遍執行,這樣就可以在你關註的地方進行多次調試,但是在執行過程中也會產生一些副作用,比如插入到資料庫裡面的數據是無法刪除的!

9.分佈過濾

當我們進入(F5)方法的時候,我們還可以訪問其外部庫(比如java.*),我們可能不需要這個庫,就可以在Perference選項卡頁面添加一個過濾器來排除這個包。

10.進入、跳出和返回

我把這個放在最後一點,在調試過程中,這些是必須要瞭解(最好掌握)的東西:

F5——進入:移動到下一個步驟,如果當前行有一個方法調用,該控制項將會跳轉到被調用方法的第一行執行。

F6——跳出:移動到下一行。如果在當前行有方法調用,那麼會直接移動到下一行執行。不會進入被調用方法體裡面。

F7——返回:從當前方法中跳出,繼續往下執行。

F8——移動到下一個斷點處執行。

問啊-一鍵呼叫程式員答題神器,牛人一對一服務,開發者編程必備官方網站:www.wenaaa.com

QQ群290551701 聚集很多互聯網精英,技術總監,架構師,項目經理!開源技術研究,歡迎業內人士,大牛及新手有志於從事IT行業人員進入!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 如果要應聘高級開發工程師職務,僅僅懂得Java的基礎知識是遠遠不夠的,還必須懂得常用數據結構、演算法、網路、操作系統等知識。因此本文不會講解具體的技術,筆者綜合自己應聘各大公司的經歷,整理了一份大公司對Java高級開發工程師職位的考核綱要,希望可以幫助到需要的人。 當前,市面上有《Java XX寶典》
  • http://fanli7.net/a/JAVAbiancheng/ANT/20101003/43604.html 級別: 中級 Roderick W. Smith ,顧問和作家 2008 年6 月02 日 Ext4 是眾多Linux? 文件系統中的最新版本,它將像以前的版本一樣重要和流行。作為Li
  • LeetCode QJ 是一個很好的刷題網站.有一天和同事交流一道有意思的題目. 在這裡分享一下. 是一個在重覆數組中查找不重覆的兩個.
  • 一、引言 前幾天面試,被大師虐殘了,好多基礎知識必須得重新拿起來啊。閑話不多說,進入正題。 二、為什麼要線程同步 因為當我們有多個線程要同時訪問一個變數或對象時,如果這些線程中既有讀又有寫操作時,就會導致變數值或對象的狀態出現混亂,從而導致程式異常。舉個例子,如果一個銀行賬戶同時被兩個線程操作,一個
  • 下麵是25個Java機器學習的工具&&庫列表: 1.Weka是一個數據挖掘任務機器學習演算法的集合。這些演算法可以直接應用於數據集或者在你自己的Java代碼中調用。Weka 包含數據預處理、分類、回歸、聚類、關聯規則、可視化 等工具。 2.Massive Online Analysis(MOA) 是一個
  • 數據對象映射模式,是將對象和數據存儲映射起來,對一個對象的操作會映射為對數據存儲的操作。 在代碼中實現數據對象映射模式,實現一個ORM類,將複雜的sql語句映射成對象屬性的操作。對象關係映射(Object Relational Mapping,ORM) ha_cl表 Hacl.php <?php n
  • 引入自: http://blog.csdn.net/aaronuu/article/details/7055650 List 轉換為 String數組 List<String> list = new ArrayList<String>(); list.add("a1"); list.add("a2"
  • 下載 cURL http://pan.baidu.com/s/1hqrHWkG (curl-7.39.0.tar.gz) 3.98MB 解壓: [plain] view plain copy tar zxvf curl-7.39.0.tar.gz ./configure --prefix=/usr/
一周排行
    -Advertisement-
    Play Games
  • 概述:本文代碼示例演示瞭如何在WPF中使用LiveCharts庫創建動態條形圖。通過創建數據模型、ViewModel和在XAML中使用`CartesianChart`控制項,你可以輕鬆實現圖表的數據綁定和動態更新。我將通過清晰的步驟指南包括詳細的中文註釋,幫助你快速理解並應用這一功能。 先上效果: 在 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • 概述:本示例演示了在WPF應用程式中實現多語言支持的詳細步驟。通過資源字典和數據綁定,以及使用語言管理器類,應用程式能夠在運行時動態切換語言。這種方法使得多語言支持更加靈活,便於維護,同時提供清晰的代碼結構。 在WPF中實現多語言的一種常見方法是使用資源字典和數據綁定。以下是一個詳細的步驟和示例源代 ...
  • 描述(做一個簡單的記錄): 事件(event)的本質是一個委托;(聲明一個事件: public event TestDelegate eventTest;) 委托(delegate)可以理解為一個符合某種簽名的方法類型;比如:TestDelegate委托的返回數據類型為string,參數為 int和 ...
  • 1、AOT適合場景 Aot適合工具類型的項目使用,優點禁止反編 ,第一次啟動快,業務型項目或者反射多的項目不適合用AOT AOT更新記錄: 實實在在經過實踐的AOT ORM 5.1.4.117 +支持AOT 5.1.4.123 +支持CodeFirst和非同步方法 5.1.4.129-preview1 ...
  • 總說周知,UWP 是運行在沙盒裡面的,所有許可權都有嚴格限制,和沙盒外交互也需要特殊的通道,所以從根本杜絕了 UWP 毒瘤的存在。但是實際上 UWP 只是一個應用模型,本身是沒有什麼許可權管理的,許可權管理全靠 App Container 沙盒控制,如果我們脫離了這個沙盒,UWP 就會放飛自我了。那麼有沒... ...
  • 目錄條款17:讓介面容易被正確使用,不易被誤用(Make interfaces easy to use correctly and hard to use incorrectly)限制類型和值規定能做和不能做的事提供行為一致的介面條款19:設計class猶如設計type(Treat class de ...
  • title: 從零開始:Django項目的創建與配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 後端開發 tags: Django WebDev Python ORM Security Deployment Op ...
  • 1、BOM對象 BOM:Broswer object model,即瀏覽器提供我們開發者在javascript用於操作瀏覽器的對象。 1.1、window對象 視窗方法 // BOM Browser object model 瀏覽器對象模型 // js中最大的一個對象.整個瀏覽器視窗出現的所有東西都 ...