全網最實用的 Debug調試技巧匯總-Python大佬偷偷使用的神技


一、思考❓❔

1.什么是debug?

  • 找茬
    • 找軟件的茬
  • 發現程序的缺陷

2.為什么需要debug?

  • 誰都不敢保證,寫的代碼沒有任何問題
  • 高效查找軟件異常
  • 一位優秀的開發工程師
    • 20%的時間寫代碼
    • 80%的時間用來排錯
  • “不會debug” == “不會代碼” == “低工資”

3.debug工具需要具備哪些功能?

  • 控制程序的執行
    • 想停則停,想執行則執行
    • 隨心所欲
  • 設置斷點
    • 在指定位置停止
  • 查看當前命名空間(程序棧)中變量

二、Python中的Debug大法📐

案例代碼如下所示:

創建deubg_skills_demo.py文件

import time

from DebugSkills.gifts import send_gift


def say_love(name, talk):
    print(f"{name}: {talk}!")
    print(show(3))
    print(f"{send_gift()}, 能代表我的心!")


def show(num):
    print(f"{'轟隆' * num}!")
    print(f"{'⚡' * num}")
    return "還敢再發誓嗎?"


def long_long_ago(name, talk):
    # breakpoint()
    print("\nlong long ago...")
    print("當初沒被雷劈死的原因既然是愛錯了那個她/他")
    print(f"{name}: {talk}!")
    print(show(4))
    print(f"{send_gift()}, 能代表我的心!")


if __name__ == '__main__':
    lover = input("請輸入你愛的人: ")
    love_talk = input("請輸入愛的箴言: ")
    # 方法一:
    # import pdb
    # pdb.set_trace()

    # 方法二:
    # breakpoint()
    breakpoint()
    say_love(lover, love_talk)
    time.sleep(5)
    lover = input("\n請輸入你愛的人: ")
    love_talk = input("請輸入愛的箴言: ")
    long_long_ago(lover, love_talk)


創建gifts.py文件

import random

gifts = ["99朵玫瑰", "鑽戒", "馬爾代夫三十日游",
         "北京二環內的一套廁所", "瑪莎拉蒂車鑰匙",
         "免費自行車司機"]


def send_gift():
    """
    送禮物
    :return:
    """
    one_gift = random.choice(gifts)
    return one_gift


1.pdb操作 (^_-)-☆

  • 系統自帶的debug工具(無需安裝)

  • 將以下代碼放在需要調試的地方(類似於設置斷點)

    # 通用方法
    import pdb; pdb.set_trace()
    
    # Python3.6以上版本
    breakpoint()
    

  • 當程序執行到上述代碼所在位置時,會自動開啟一個console終端

    • "->"是接下來要執行的代碼(當前還未執行


  • 可以在終端運行的命令

    • list或者l

      • 顯示當前運行的代碼
      • 默認列出11行代碼


    • p 變量名 或者 p 需要運行的表達式

      • 打印變量的值


    • step或者s

      • 如果在函數調用處執行,則會進入函數體內部


  • next或者n

    • 如果在函數調用處執行,則不會進入函數體內部


  • enter

    • 重復執行上一次的命令
  • b(reak) [ ([filename:]lineno | function) [, condition] ]

    • 設置斷點
    • filename可選,如果不傳,默認在當前文件設置斷點


  • c或者continue

    • 繼續往下運行,在下一個斷點處停下來


  • disable 斷點編號

    • 禁用斷點


  • enable 斷點編號

    • 啟用斷點
  • cl或者clear 斷點編號

    • 清除斷點


  • display或者undisplay 變量

    • 監聽或者不監聽某個變量

    • 如果變量值改變,會自動顯示


  • h或者help

    • 幫助信息


  • h 具體命令

    • 具體命令的幫助文檔

  • h pdb

    • pdb的完整文檔


三、Pycharm debug操作🔨🔨


1.打開Python Prompt

會出現一個ipython的控制台

  • 可在控制台查看當前命名空間中的變量
  • 也可執行Python表達式


2.Step Over / F8

  • 按調試工具欄中的

  • 類似於pdb中的next

  • 程序不會進入到函數體內部


3.Step Into / F7

  • 按調試工具欄中的

  • 類似於pdb中的step

  • 程序會進入到函數(方法)體內部、系統源碼、第三方模塊源碼中


4.Step Out / Shift+F8

  • 從函數體內部跳出


5.Step Into My Code / ALT+Shift+F7

  • 按調試工具欄中的

  • 主要關注自己寫的代碼

  • 從系統源碼、第三方模塊源碼中跳到自己寫的代碼中


6.Evaluate Expression

  • 在當前命名空間內計算表達式的值

7.Quick Evaluate Expression

  • 快速計算表達式的值


8.Watching

  • 類似於pdb中的display
  • 可以監聽某個變量或者表達式的值

四、總結💡💡

  • 作為代碼編寫者,掌握代碼的調試技巧是必備的
  • 能提升工作效率,提高代碼質量
  • Python中Debug調試工具和技巧非常多
  • 最常用、最實用的知識點,本文均有覆蓋


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM