什麼是偵錯?
偵錯是在任何軟體的原始程式碼中發現和修正錯誤的程序。當軟體無法依預期執行時,電腦程式設計人員會研究程式碼,以確定發生錯誤的原因。他們會使用偵錯工具在控制的環境中執行軟體,逐步檢查程式碼,以及分析和修正問題。
偵錯一詞源於何處?
偵錯一詞可以追溯到 20 世紀 40 年代在哈佛大學工作的海軍上將 Grace Hopper。當她的一位同事發現一隻飛蛾阻礙了大學的一台電腦的運行時,她告訴他們,他們正在對系統進行偵錯。電腦程式設計人員於 20 世紀 50 年代首次使用術語錯誤和偵錯,而到了 20 世紀 60 年代初期,程式設計語言界開始普遍接受了術語偵錯。
為什麼偵錯很重要?
錯誤發生在電腦程式設計過程中,因為它是一種抽象的概念活動。電腦會以電子訊號的形式操控資料。程式設計語言將這些資訊抽象化,因此人類可以更有效地與電腦互動。任何類型的軟體都有幾個抽象層,不同的元件會進行通訊以使應用程式正常運作。發生錯誤時,發現和解決問題可能具有挑戰性。偵錯工具和策略有助於更快地修正問題並提高開發人員的生產力。因此,軟體品質和最終使用者體驗有所改善。
偵錯過程如何運作?
偵錯過程通常需要以下步驟。
錯誤識別
開發人員、測試人員和最終使用者報告他們在測試或使用軟體時發現的錯誤。開發人員找到導致錯誤的確切程式碼行或程式碼模組。這一過程可能是既乏味又耗時。
錯誤分析
編碼人員可記錄所有程序狀態變更和資料值,進而分析錯誤。他們還會根據錯誤修正對軟體功能的影響來確定其優先順序。軟體團隊還會根據開發目標和要求確定錯誤修正的時間表。
修正與驗證
開發人員修正錯誤並執行測試,以確保軟體繼續依預期執行。他們可能會編寫新的測試來檢查該錯誤是否在將來再次出現。
偵錯與測試
偵錯和測試是互為補充的過程,可確保軟體程序按應有的方式執行。在編寫了程式碼的完整部分或其中某些部分後,程式設計人員會進行測試以識別錯誤。一旦發現錯誤,編碼人員就可以開始偵錯過程並努力消除軟體的任何錯誤。
需要偵錯的編碼錯誤有哪些?
軟體開發固有的複雜性可能會導致產生軟體缺陷。由於客戶以意想不到的方式使用它,軟體上線後也會觀察到輕微的生產錯誤。以下是我們給出的一些通常需要偵錯流程的常見錯誤類型。
語法錯誤
語法錯誤是當電腦程序的陳述式不正確時發生的錯誤。它相當於文字處理中的錯字或拼寫錯誤。如果存在語法錯誤,程序將不會編譯或執行。程式碼編輯軟體通常會反白顯示此錯誤。
語義錯誤
語義錯誤是由於程式設計陳述式使用不當造成的。例如,如果您要將表達式 x/(2 π) 翻譯成 Python,您可能會這樣寫:
y = x / 2 * math.pi
但是,該陳述式並不正確,因為乘法和除法在 Python 中具有相同的優先級,並且是從左到右計算的。因此,此表達式的運算結果為 (xπ)/2,從而導致錯誤。
邏輯錯誤
當程式設計人員誤解電腦程序的逐步過程或演算法時,就會出現邏輯錯誤。例如,程式碼可能過早退出循環,或者可能得到不正確的 if-then 結果。您可逐步執行幾種不同輸入/輸出情境的程式碼,進而識別邏輯錯誤。
執行階段錯誤
執行階段錯誤是由於軟體程式碼執行的運算環境而造成的。範例包括記憶體空間不足或堆疊溢出。您可以在 try-catch 區塊中包圍陳述式或使用適當的訊息記錄例外狀況,進而解決執行階段錯誤。
常見的偵錯策略有哪些?
程式設計人員可以使用多種策略來最大程度地減少錯誤,並減少偵錯所需的時間。
增量程序開發
增量開發是在可管理的部分中開發程序,以便頻繁測試程式碼的一小部分。如此以來,程式設計人員可以本地化他們找到的任何錯誤。它還允許他們一次處理一個錯誤,而不是在編寫大部分程式碼後處理多個錯誤。
回溯
回溯是一種熱門的偵錯方法,尤其是對於較小的程序而言。開發人員從發生致命錯誤的位置逆向工作,以識別程式碼中的確切發生點。不幸的是,隨著程式碼行數的增加,該流程變得更具挑戰性。
遠端偵錯
遠端偵錯是指對與本機電腦不同的環境中執行的應用程式進行偵錯。例如,您可使用遠端安裝的偵錯工具來解決錯誤。
記錄日誌
大多數電腦程序在日誌檔案中記錄內部資料和其他關鍵資訊,例如執行時間和作業系統狀態。開發人員研究日誌檔案,以確定和解決錯誤。他們還使用日誌分析器等工具來自動處理日誌檔案。
雲端偵錯
偵錯複雜的雲端應用程式具有挑戰性,因為開發人員必須在本機電腦上模擬雲端架構。雲端環境和模擬環境之間可能會出現逾時組態差異。這樣一來,將會導致生產中出現更多錯誤並延長開發週期。更高效的雲端偵錯需要特殊工具。
AWS 如何幫助偵錯?
AWS 以幾種不同的方式支援編碼和偵錯工作。
熱門 IDE 的外掛程式
開發人員使用整合式開發環境 (IDE) 來編寫程式碼。AWS 有幾個與 IDE 相容的外掛程式,並支援您的偵錯過程。例如,AWS Toolkit for Eclipse 是適用於 Eclipse Java IDE 的開放原始碼外掛程式,讓開發人員可以輕鬆地使用 Amazon Web Services 開發、偵錯和部署 Java 應用程式。同樣,AWS 還會透過與其他熱門 IDE 整合的外掛程式提供對其他語言的偵錯支援,例如:
- 適用於 Python 的 PyCharm
- 適用於 Java 和 Python 的 IntelliJ IDEA
- 適用於 .Net 的 Rider
- 適用於 JavaScript 的 WebStorm
這些外掛程式可支援雲端偵錯,從而讓開發人員可以透過直接存取雲端中執行的程式碼來對雲端應用程式進行偵錯。
AWS X-Ray
AWS X-Ray 是一種偵錯工具,開發人員可使用它來分析開發和生產中的應用程式。其包含簡單的三層應用程式的一切功能,可由成千上萬服務組成更為複雜的微型服務應用程式。
藉助 X-Ray,您可以:
- 了解應用程式及其基礎服務的運作情況
- 找出效能問題和各種錯誤的根本原因,然後予以解決
- 在請求通過您的應用程式時,分析請求的端對端檢視
立即建立免費的 AWS 帳戶,開始使用 AWS X-Ray。