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 將以紅色突出顯示它:
第二次用鼠標單擊代碼左側的窗格將刪除斷點。
也可以簡單Ctrl
地使用熱鍵組合+將斷點放置在當前行上F8
。在已經有斷點的行上再次按Ctrl
+將刪除它。F8
4.以debug模式啟動程序
如果您的程序中至少有一個斷點,您可以通過按Shift
+F9
或單擊“錯誤圖標”以調試模式運行該程序。
以調試模式啟動後,程序照常運行。但是一旦到達標有斷點的代碼行,它就會暫停。例子:
在屏幕截圖的上半部分,您會看到帶有兩個斷點的程序代碼。程序的執行在第 5 行停止,該行用藍線標記。第 5 行尚未執行:尚未向控制台輸出任何內容。
在屏幕的下半部分,您會看到調試窗格:調試器窗格、控制台 窗格和一組用於調試模式的按鈕。
您可以通過按左下方窗格中的恢復程序按鈕(或按 )來取消暫停您的程序(即繼續執行)F9
。
如果按下此按鈕(或F9
),程序將繼續運行,直到遇到下一個斷點或結束。這是我們點擊按鈕後看到的:
程序停在第二個斷點處,在控制台可以看到Hello
and字樣。and
這表明我們只執行了在屏幕上顯示輸出的三行中的兩行。
5.分步執行
如果你的程序運行在調試模式下,你也可以單步執行:一步就是一行。有兩個用於逐步執行的熱鍵:F7
和F8
:每個都會導致執行當前代碼行。但首先,您仍然必須使用斷點來停止您的程序。
如果你想逐行執行你的程序,你需要在方法的開頭放置斷點main()
並以調試模式運行它。
當程序停止時,您可以開始逐行執行它。一F8
鍵執行一行。
這是我們的程序停止後的樣子,我們按一下鍵F8
:
main方法第一行已經執行完畢,當前行是第二行。您還可以在屏幕截圖的底部看到該詞Hello
已顯示在屏幕上。
6.逐步執行進入方法
如果您在程序中編寫了自己的方法,並且希望在調試模式下執行到您的方法內部,即您希望“進入方法”,那麼您需要按而F7
不是F8
。
假設您單步執行程序,現在停在第 4 行。如果您按F8
,IDEA 將簡單地執行第四行並移至第五行。
但是如果你按下F7
,IDEA 會進入main2()
方法:
這很簡單。如果您真的不關心方法內部會發生什麼或如何發生,那麼您可以按F8
。如果它很重要,則按F7
並逐步執行其所有代碼。
GO TO FULL VERSION