1.錯誤

程序員有他們自己的俚語,儘管許多人認為這是技術行話。無論如何,您都無法避免了解它。你需要深入細節。所以讓我們開始吧。

您首先要知道的詞之一是“ bug ”,即昆蟲。在軟件開發的上下文中,這個詞表示程序中的錯誤,即程序做錯或不太正確的事例。或者只是奇怪地工作。

但是如果一個程序員認為這個程序儘管有奇怪的行為,但確實在做它應該做的事情,那麼他或她通常會聲明“這不是錯誤,這是一個特性”。這催生了一堆互聯網模因。

一般來說,軟件缺陷可能有多種原因:從程序邏輯錯誤、拼寫錯誤和不正確的程序架構,到編譯器中的問題。在任何情況下,程序員都需要修復程序中的真正錯誤和任何其他“缺點”。

“錯誤”一詞的歷史

“bug”這個詞的起源最常見的版本是一個傳說。

1945 年 9 月,哈佛大學的科學家們正在測試第一台計算機 Mark II。計算機無法正常工作,在檢查所有電路板的過程中,他們發現一隻飛蛾卡在機電繼電器的觸點之間。

提取的昆蟲被錄入技術日誌,並附有這樣的題詞:“第一個實際發現的錯誤案例。”

這個有趣的故事被認為是使用“錯誤”一詞來表示錯誤的開始,而“調試”一詞已成為消除錯誤的代名詞。


2.調試程序

為了修復程序中的錯誤,程序員使用稱為調試器的特殊程序。其中一些程序甚至知道如何調試機器代碼。

Java 程序員使用 IDE 來調試他們的程序。例如 IntelliJ IDEA、Eclipse 和 NetBeans。IntelliJ IDEA 是迄今為止最強大的 IDE,因此我們將以它為例來介紹調試過程。

IntelliJ IDEA 可以以兩種模式運行你的程序:

執行模式 工具欄圖標 熱鍵
正常執行 Shift+F10
以調試模式啟動 Shift+F9

您已經熟悉正常執行:程序啟動、運行和退出。但是調試模式為您準備了很多驚喜。

調試模式

調試模式可讓您逐步瀏覽整個程序。或者更準確地說,它可以讓您逐行移動。更重要的是,您可以在程序的每一步(每行代碼執行後)觀察變量的值。你甚至可以改變他們的價值觀!

即使是對調試程序有一點了解,你也需要學習三件事:

  • 斷點
  • 分步執行
  • 檢查變量的值

3.斷點

IDE 允許您在代碼中放置稱為斷點的特殊標記。每次以調試模式運行的程序到達標有斷點的行時執行將暫停。

要在特定的行上放置斷點,您只需要在 IDEA 中單擊該行的左側即可。例子:

斷點 IntelliJ IDEA

該行將標有斷點,IntelliJ IDEA 將以紅色突出顯示它:

標有斷點

第二次用鼠標單擊代碼左側的窗格將刪除斷點

也可以簡單Ctrl地使用熱鍵組合+將斷點放置在當前行上F8在已經有斷點的行上再次按Ctrl+將刪除它。F8


4.以debug模式啟動程序

如果您的程序中至少有一個斷點,您可以通過按Shift+F9或單擊“錯誤圖標”以調試模式運行該程序。

以調試模式啟動後,程序照常運行。但是一旦到達標有斷點的代碼行,它就會暫停。例子:

以調試模式啟動程序

在屏幕截圖的上半部分,您會看到帶有兩個斷點的程序代碼。程序的執行在第 5 行停止,該行用藍線標記。第 5 行尚未執行:尚未向控制台輸出任何內容。

在屏幕的下半部分,您會看到調試窗格:調試器窗格、控制台 窗格和一組用於調試模式的按鈕。

您可以通過按左下方窗格中的恢復程序按鈕(或按 )來取消暫停您的程序(即繼續執行)F9

以調試模式 3 啟動程序

如果按下此按鈕(或F9),程序將繼續運行,直到遇到下一個斷點或結束。這是我們點擊按鈕後看到的:

以調試模式 4 啟動程序

程序停在第二個斷點處,在控制台可以看到Helloand字樣。and這表明我們只執行了在屏幕上顯示輸出的三行中的兩行。


5.分步執行

如果你的程序運行在調試模式下,你也可以單步執行:一步就是一行。有兩個用於逐步執行的熱鍵:F7F8:每個都會導致執行當前代碼行。但首先,您仍然必須使用斷點來停止您的程序。

如果你想逐行執行你的程序,你需要在方法的開頭放置斷點main()並以調試模式運行它。

當程序停止時,您可以開始逐行執行它。一F8鍵執行一行。

這是我們的程序停止後的樣子,我們按一下鍵F8

以調試模式啟動程序。 分步執行

main方法第一行已經執行完畢,當前行是第二行。您還可以在屏幕截圖的底部看到該詞Hello已顯示在屏幕上。


6.逐步執行進入方法

如果您在程序中編寫了自己的方法,並且希望在調試模式下執行到您的方法內部,即您希望“進入方法”,那麼您需要按而F7不是F8

假設您單步執行程序,現在停在第 4 行。如果您按F8,IDEA 將簡單地執行第四行並移至第五行。

通過進入方法 2 逐步執行

但是如果你按下F7,IDEA 會進入main2()方法:

一步步執行進入方法 3

這很簡單。如果您真的不關心方法內部會發生什麼或如何發生,那麼您可以按F8。如果它很重要,則按F7並逐步執行其所有代碼。