更新時間:2022-09-01 10:48:37 來源:動力節點 瀏覽2858次
在Java中怎么debug?動力節點小編來告訴大家。
1.設置一個實際的調試斷點。這可以通過雙擊代碼的左邊框或右鍵單擊左邊框(行號旁邊)并選擇“切換開/關”來完成
2.如何在Debug模式下啟動程序。所以大家都熟悉main方法了。
右鍵單擊“Main”方法->選擇運行方式-> Java應用程序。
但這次我們將選擇 Debug 作為 Java 應用程序,而不是使用 Run as Java 應用程序。
右鍵單擊 Main 方法 -> 選擇調試為 -> Java 應用程序。
它切換到不同的視角。這稱為調試透視圖,您將在此處看到。調試視角。實際上,這只是代碼的不同視圖,可以讓您更好地調試。因此,這只是進行調試的一種更簡單的方法。它向您顯示您的變量(在右上角)以及您的程序可能在其中運行(或暫停)的任何線程。
如您所見,我們在調試模式下運行我們的程序,現在我們有一條突出顯示的綠線,表示 Java 代碼實際上已暫停并等待執行這行代碼。好吧,這很酷。我們如何真正告訴它執行那行代碼?在屏幕頂部,ares 控件允許我們控制調試流程。所以這里我們有 Resume 按鈕。所以如果我點擊這個。它基本上會運行代碼,直到它遇到另一個斷點或直到執行完成。終止按鈕,這是不言自明的。它將停止調試模式,它實際上會在您所在的位置終止程序。所以它實際上不再執行代碼,它只會停止,退出。不會再發生什么了。
現在我們有了“步入”。現在這個,我不經常使用它,因為有時你會進入 Java 的細節代碼。您將進入實際的 Java 類文件。我可能可以向您展示那是什么樣的,但我還不想這樣做。我很少使用它。
通常我使用“Step Over”,這意味著執行這行代碼,然后繼續下一行。所以如果我現在這樣做。如果我單擊“Step Over”,它將執行這整行代碼,這將反過來實例化這個類。現在,在實例化這個類時,代碼必須進入文件 IO 類的構造函數并執行構造函數內的代碼。嗯,這正是我們在FileIO. 這個 publicFileIO是構造函數,這里的代碼是該構造函數內部的所有內容。因為我們在第 16 行設置了一個斷點,所以代碼應該在第 16 行停止。所以讓我們看看這是否真的發生了。
讓我們回到這里。我要點擊“Step Over”,然后就可以了。所以現在代碼已經執行了我們的文件 IO 構造函數的實例化。它被聲明為我們的BufferedReader,它執行了 try 塊的第一部分。現在我們正在等待實例化BufferedReader. 然后它FileReader用我們傳入的文件名實例化 a 。
在調試模式下,真正的好處是我們可以將鼠標懸停在變量上,它實際上會向我們顯示該變量的值是什么。讓我提出來,你去。
因此,我們根據傳遞給此構造函數的參數設置變量,該構造函數在我的程序中看到。所以我實際上將它硬編碼為 C:aFile.txt。所以我要繼續“跨過”這條線。會發生一些有趣的事情。讓我們看看會發生什么。你本來希望轉到下一行,但它卻跳進了我們的 catch 塊。
現在它為什么要這么做?嗯,那是因為現在在我當前的配置中,我根本沒有將 aFile.txt 存儲在 C 驅動器中。該文件不存在。那么會發生什么?好吧,它會拋出一個異常。所以 Java 會拋出一個異常,因為我們將這一行包裹在我們的 try 塊中。然后它將進入 catch 塊并捕獲FileNotFoundException. 所以我們有一個FileNotFoundException我們實際上已經分配給一個變量名e.
同樣,在調試模式下,您可以將鼠標懸停在變量上,它會向您顯示有關該特定變量的所有信息。因此,我們將其視為FileNotFoundException. 我們看到一條詳細的消息說,C:\aFile.txt(系統找不到指定的文件),我們有一個原因和所有這些東西。準確地知道問題出在哪里會很有幫助,這里的這一行e.printStackTrace()只會將有關錯誤的所有重要信息輸出到我們的控制臺中。
現在,“Resume”并讓它執行其余的代碼,這樣現在代碼就會流出完成。您現在看到線程已終止并且我們完成了。
所以這是一個非常簡單的“如何調試”示例,但它是如此強大的工具,在我們完成這里之前,現在真的很快。
右鍵單擊“Main”方法->轉到調試為-> Java應用程序。
所以我們在這里為第一行設置了斷點,就像之前一樣,將進入“Step Into”。
當點擊它時,你會看到會發生什么。我們現在進入了一個ClassLoader.class文件,它是 Java lang 包的一部分,對我們沒有多大幫助。我猜這段代碼是由制作 Java 的人編寫的,他們的代碼破壞這個代碼的可能性非常小。所以它變得非常復雜。
右鍵單擊“main”方法->選擇調試為-> Java應用程序->跳過或恢復
這并不重要,因為有第二個斷點。如果恢復,會到這里,所以現在文件應該存在那里。
所以讓“跳過”這個,然后你就可以了。所以現在如果我們將鼠標懸停在BufferedReader,我們就有了一些東西。而且我們能夠不斷地跳過代碼。現在我們進入我們的while循環,您會看到它轉到第一個System.out為文件準備好的行,這是文件中的第 1 行。
我們再次說“step over”,我們會看到一些控制臺輸出,所以這是了解代碼如何流動的好方法。很有用。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習