首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python 除錯技巧大全:print、assert、logging、pdb、IDE 五大方法優劣比較

     編輯:更多程式設計知識

程式一次寫對機率極低,除錯是開發者日常。本文整理五種主流除錯手法,從原始 print 到專業 IDE,分析優缺點與適用場景,附實戰程式碼片段。

1. print 大法:簡單粗暴但殘留垃圾輸出

def foo(s):
    n = int(s)
    print('>>> n = %d' % n)
    return 10 / n
  • 優點:零門檻、即時可見。
  • 缺點:上線前須手動移除,雜訊干擾正常輸出。

2. assert 斷言:開關自如,生產環境可關閉

def foo(s):
    n = int(s)
    assert n != 0, 'n is zero!'
    return 10 / n
  • python -O 啟動時自動忽略所有 assert(視同 pass)。
  • 缺點:程式碼中大量 assert 同樣影響可讀性。

3. logging 模組:分級控制、多輸出目的地、不拋出異常

import logging
logging.basicConfig(level=logging.INFO)
s = '0'
n = int(s)
logging.info('n = %d', n)
print(10 / n)
  • 等級:DEBUG < INFO < WARNING < ERROR < CRITICAL,單一設定全域控制。
  • 可同時輸出至 Console、檔案、Syslog、HTTP 端點。
  • 生產環境建議設為 WARNING 以上,開發環境 DEBUG。

4. pdb 命令列除錯器:單步執行、檢查變數、設定斷點

啟動整支程式

$ python -m pdb err.py

程式碼內嵌斷點 (Python 3.7+)

import pdb; pdb.set_trace()  # 或 breakpoint()

常用指令

指令功能
n (next)單步執行(不進入函式)
s (step)單步進入函式
c (continue)繼續執行至下一斷點
p 變數印出變數值
l (list)顯示原始碼上下文
q (quit)離開除錯器
  • 優點:標準庫內建、遠端 SSH 環境也能用。
  • 缺點:大型專案單步極慢,缺乏視覺化呼叫堆疊。

5. IDE 圖形化除錯:PyCharm / VS Code + Python 擴充

  • 滑鼠點擊行號設定斷點、條件斷點、Logpoint。
  • 變數面板即時顯示、支援物件屬性展開、記憶體位址檢視。
  • 支援多執行緒、多程序、Docker 遠端除錯。
  • 學習曲線略高,但長期效率最高。

總結建議

  1. 快速驗證假設 → print / logging.debug
  2. 防禦性檢查 → assert
  3. 正式專案日誌 → logging 統一管理
  4. 複雜邏輯追蹤 → IDE 斷點除錯
  5. 無圖形環境/遠端伺服器 → pdb.set_trace()

「Logging 才是終極武器」——善用結構化日誌,事後追查比即時除錯更有效率。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved