8.1 Bug 的出現
程式除錯是一個尋找與修正程式錯誤或 bug 的過程。這個過程是軟體開發中最有趣且重要的部分之一,能幫助確保程式的正確運行。
"bug" 這個詞的歷史
"bug" 這個詞在電腦程式的上下文中首次使用是在 1940 年代。儘管"bug"的概念早在電腦出現之前就已存在,用來描述各種裝置中的機械故障。
"bug" 在電腦技術中首次被紀錄的使用是在 1947 (!) 年,當時一個小組在哈佛大學的 Mark II 電腦上工作。他們發現其中一個繼電器停止工作,因為有一只蛾卡住了。他們移除了這只昆蟲,並將其紀錄為"第一次發現真實的昆蟲" (literal bug)。
儘管這不是第一次用"bug"來表示錯誤,這個事件卻因而聞名,推廣了"bug"這個詞的使用。
程式除錯
除錯是尋找、診斷並修正軟體中 bug 的過程。除錯過程包括幾個階段:
- 發現錯誤: 確定指出程式中存在錯誤的症狀。
- 重現錯誤: 創造條件讓錯誤再次出現,好更好地理解其本質。
- 診斷問題: 使用各種工具和方法來分析代碼並尋找錯誤的原因。
- 修正錯誤: 對代碼進行修改以排除錯誤。
- 測試: 驗證修正並測試程式,確保錯誤已排除且沒有出現新的問題。
所以 bug 是程式中任何錯誤的一般稱呼,而除錯則是發現並修正這些錯誤的過程。
8.2 除錯工具與方法
Logging
在程式碼中加入 log 可以追蹤程式的執行,以及獲得程序中變數和操作狀態的信息。在 Python 中有很棒的庫來進行 Logging,就是 logging
。
Logging 的使用範例:
import logging
# 設定 logging 來輸出除錯信息
logging.basicConfig(level=logging.DEBUG)
def divide(a, b):
# Logging 除法嘗試
logging.debug(f"分割 {a} 到 {b}")
if b == 0:
# Logging 錯誤,如果 b 為 0
logging.error("嘗試除以零!")
return None
# 如果 b 不為 0,則執行分割
return a / b
result = divide(10, 2)
print(result)
使用除錯器 (Debuggers)
除錯器是一種工具,可以讓開發者逐步執行程式、設置斷點 (breakpoints)
,檢查變數的值並在程式執行時更改它們。
受歡迎的除錯器有:
- GDB: 用於 C, C++ 等程式語言的 GNU Debugger。
- PDB: 內建的 Python 除錯器。
- Visual Studio Debugger: 內建於 Microsoft Visual Studio 的除錯器。
- PyCharm Debugger: 內建於 PyCharm IDE 的 Python 除錯器。
PDB 的使用範例
import pdb
def faulty_function(a, b):
pdb.set_trace() # 設置斷點
result = a / b
return result
faulty_function(10, 0)
當程式達到 pdb.set_trace()
,它會停下來,你可以執行除錯命令,例如 next
(下一步)、print
(打印變量值) 和其他命令。
我們會在接下來的課程中學習使用 PyCharm 內建的除錯器進行程式除錯。
8.3 使用 debug
總的來說,debug 包含積極使用除錯工具和實踐來發現和修復錯誤。
設置斷點: 在程式碼中設置斷點以在你感興趣的地方停止程式的執行。
逐步執行: 逐步執行程式以觀察程式狀態和變量值的變化。
分析變量: 在程式執行的不同階段分析變量和表達式的值,以發現不正確的數據或邏輯錯誤。
修正錯誤: 修改代碼以排除找到的錯誤。
重測試: 修正錯誤後進行程式測試,確保錯誤已排除且沒有新問題產生。
看起來很簡單,是吧?我們會在下一堂課中詳細走過每個步驟 :)
GO TO FULL VERSION