ดีบัก Python Like a Hero ด้วยไลบรารีและเครื่องมือเหล่านี้

คุณต้องการที่จะเป็นผู้เชี่ยวชาญด้านการดีบัก Python ตัวจริงหรือไม่? ดีบักโค้ด Python ของคุณโดยใช้เครื่องมือแก้ไขข้อบกพร่อง Python ที่น่าทึ่งและไลบรารี่ที่เราจะกล่าวถึงในเร็วๆ นี้!

Python เป็นภาษาโปรแกรมสำหรับวัตถุประสงค์ทั่วไป ระดับสูง และเชิงวัตถุ ใช้เพื่อวัตถุประสงค์ในการพัฒนาหลายอย่าง นอกจากนี้ยังเป็นเครื่องมือพัฒนาที่มีประสิทธิภาพสำหรับแอปพลิเคชันต่างๆ ตั้งแต่การพัฒนาเว็บแอปพลิเคชันไปจนถึงการขูดเว็บและแอปพลิเคชันที่ซับซ้อนมากขึ้น เช่น การเรียนรู้ของเครื่องและวิทยาศาสตร์ข้อมูล

ในระหว่างการพัฒนา มักจะเกิดข้อผิดพลาดที่เรียกว่าบั๊กในการเขียนโปรแกรม นักพัฒนาใช้หลายขั้นตอนในการตรวจจับและกำจัดจุดบกพร่องที่มีอยู่และที่อาจเกิดขึ้นจากโค้ด เป็นผลให้คุณป้องกันไม่ให้รหัสโปรแกรมบีบอัด เราเรียกกระบวนการนี้ว่าการดีบัก

บทความนี้จะกล่าวถึงดีบักเกอร์ Python ที่มีอยู่หลายตัวที่คุณสามารถใช้ได้ นอกจากนี้เรายังจะเห็นว่าดีบักเกอร์เหล่านี้แตกต่างกันอย่างไรและอะไรที่ทำให้การใช้งานของพวกเขามีประสิทธิภาพ

ไลบรารีการดีบัก cProfiler

cProfilerเป็นไลบรารียอดนิยมและส่วนขยาย C ที่รันโปรไฟล์ของโค้ดที่รันเป็นเวลานาน ในระยะยาว จะระบุส่วนของรหัสโปรแกรมที่ใช้เวลานานในการทำงาน แม้ว่าจะระบุเวลาที่แม่นยำในการเรียกใช้ส่วนต่างๆ ของโค้ด แต่ก็ไม่ได้ระบุหรือแก้ไขข้อบกพร่องในโค้ดทั้งหมด

ดังนั้น ความจำเป็นในการใช้ดีบักเกอร์อื่นๆ จึงเกิดขึ้น

โชคดีที่คุณสามารถใช้ไลบรารีที่แนะนำ เช่น ipdb, Django-debug-toolbar, pyelftools, viztracer และ py-spy เป็นเครื่องมือดีบักสำหรับโค้ด Python ของคุณแทน

เครื่องมือดีบัก ipdb

Python Debugger ที่เปิดใช้งาน IPython แบบเต็มคือดีบักเกอร์บุคคลที่สามแบบโต้ตอบที่มี pdbฟังก์ชันการทำงาน Ipbd มาพร้อมกับการสนับสนุนเชลล์ IPython แบบโต้ตอบ การสนับสนุนดังกล่าวรวมถึงการเติมแท็บให้สมบูรณ์ การสนับสนุนสี และฟังก์ชันมายากล รวมถึงคุณลักษณะการสนับสนุนอื่นๆ

ดีบักนี้ช่วยให้สามารถเข้าถึงตัวดีบัก IPython โดยการส่งออกฟังก์ชันที่เกี่ยวข้อง นอกจากนี้ยังมีอินเทอร์เฟซที่คล้ายกันเพื่อการวิปัสสนาที่ดีขึ้น เช่นเดียวกับในโมดูล pdb

การดีบักด้วย Ipdb

ไลบรารีต้องการการติดตั้งโดยใช้คำสั่ง pip ด้านล่าง

pip install ipdb

ตัวอย่างของการใช้ ipdb จะมีลักษณะดังนี้:

import ipdb
alpha_list = ['a', 'b', 'c']
fruit_list = ['orange', 'mango', 'kiwi']

def nested_loop():
    for fruit_list:
        print (fruit)
        ipdb.set_trace()
    for x in alpha_list:
        print(x)
if __name__ == '__main__':
    nested_loop()

เรียกใช้ไฟล์ python โดยใช้คำสั่งด้านล่างโดยที่ test.py เป็นชื่อไฟล์ของฉัน:

python -m ipdb test.py

ipdb นำเข้าและเรียกใช้ฟังก์ชัน ipdb.set_trace() อนุญาตให้เริ่มต้นโปรแกรมและรันโปรแกรมดีบั๊กผ่านการดำเนินการ

  วิธีแก้ไขปัญหาเสียงการประชุม Zoom

ฟังก์ชัน ipdb.pm() (ชันสูตรพลิกศพ) ทำหน้าที่คล้ายกับ %debug magic function

อาร์กิวเมนต์ set_trace

ส่งบริบทเป็นอาร์กิวเมนต์ไปยัง set_trace เพื่อแสดงโค้ดหลายบรรทัดที่กำหนดไว้ นอกจากนี้ cond ซึ่ง set_trace ยังยอมรับเป็นอาร์กิวเมนต์ ยอมรับค่าบูลีน และเริ่มอินเทอร์เฟซ ipdb เมื่อคุณตั้งค่า cond เป็นจริง

การใช้ไฟล์กำหนดค่า

ตั้งค่าอาร์กิวเมนต์บริบทด้วยไฟล์ idpdb หรือไฟล์ setup.cfg ที่มีอยู่ในโฮมโฟลเดอร์และโฟลเดอร์โปรเจ็กต์ตามลำดับ คุณสามารถตรวจสอบการทำงานของ ipdb เพิ่มเติมได้

แถบเครื่องมือแก้ไขข้อบกพร่อง Django

ดิ แถบเครื่องมือดีบัก Django เป็นเครื่องมือดีบักยอดนิยมใน Django: เฟรมเวิร์ก Python

ชุดแผงที่กำหนดค่าได้นี้จะแสดงคำขอปัจจุบันหรือข้อมูลการแก้ไขข้อบกพร่องของการตอบกลับ เมื่อคุณคลิกแถบเครื่องมือ รายละเอียดเพิ่มเติมเกี่ยวกับเนื้อหาของแผงจะปรากฏขึ้น

เครื่องมือนี้จะตรวจสอบสภาพแวดล้อมการพัฒนา Django อย่างละเอียด

ทำตามขั้นตอนการติดตั้งและคำแนะนำการกำหนดค่า ที่นี่.

ห้องสมุด Pyelftools

ดิ pyelftools ไลบรารี่สร้างขึ้นบน Python ล้วนๆ มันแยกวิเคราะห์และวิเคราะห์ไฟล์ ELF และข้อมูลการดีบัก DWARF และต้องใช้ Python เท่านั้นในการทำงาน

การใช้ Pyelftools เป็นเรื่องง่ายเนื่องจากไม่มีไลบรารีภายนอก นอกจากนี้ การใช้ pyelftools โดยไม่ต้องติดตั้งนั้นค่อนข้างง่าย เนื่องจากเพียงแค่ต้องปรับ PYTHONPATH ในตัวแปรสภาพแวดล้อม

คุณจะติดตั้งโดยใช้:

pip install pyelftools 

การใช้งาน pyelftools เพียงแค่ต้องนำเข้าและเรียกใช้ในโปรแกรมของคุณ

ไอศครีม 🍦 เครื่องมือดีบัก

นี่เป็นอีกหนึ่งเครื่องมือดีบั๊กที่มีประสิทธิภาพสำหรับนักพัฒนา Python

โดยใช้ ไอศกรีมนอกจากนี้ ic() ยังมีประโยชน์มากกว่า print() ดังที่อธิบายไว้ด้านล่าง:

  • การพิมพ์ค่อนข้างเร็วกว่าอย่างแท้จริง
  • มันพิมพ์โครงสร้างข้อมูลได้ค่อนข้างดี
  • พิมพ์นิพจน์หรือชื่อตัวแปรและค่าด้วย ic()
  • มันเน้นไวยากรณ์ของผลลัพธ์
  • รวมถึงบริบทของโปรแกรม รวมถึงชื่อไฟล์ หมายเลขบรรทัด และฟังก์ชันพาเรนต์

ก่อนใช้แพ็คเกจนี้ ให้ติดตั้งโดยใช้คำสั่ง pip ด้านล่าง:

pip install icecream

สิ่งที่ดีคือคุณสามารถใช้ ic() ได้ในทุกไฟล์โดยไม่จำเป็นต้องนำเข้าในทุกไฟล์โดยติดตั้งโดยใช้ install() นอกจากนี้ install() จะเพิ่ม ic() ให้กับโมดูลบิวด์อิน ไฟล์ทั้งหมดที่นำเข้าล่ามจะใช้ ic() ร่วมกัน

  วิธีดาวน์โหลด Master Royale บน iPhone

ในไฟล์ root python ไฟล์แรกของคุณ ซึ่งคุณสามารถตั้งชื่อ x.py ได้ ให้เพิ่ม ic() โดยใช้ install()

from icecream import install
install()
from y import mult
mult()
 

ในไฟล์ y.py ไฟล์ x.py กำลังนำเข้า เรียก ic()

def mult():
    z=8
    ic(z)

ผลลัพธ์:

y
ic| z : 8

สิ่งที่ทำให้ ic() มีประสิทธิภาพมากขึ้นคือความสามารถในการตรวจสอบตัวแปรที่ส่งผ่าน รวมถึงตัวมันเอง จากนั้นพิมพ์อาร์กิวเมนต์และค่าอาร์กิวเมนต์ตามตัวอย่างต่อไปนี้

from icecream import ic
def mult(x):
    return x * 4
ic(mult(100))

เอาท์พุท:

ic| mult(100): 400

ยิ่งไปกว่านั้น คุณสามารถแทรก ic() ลงในโค้ดที่มีอยู่ก่อนได้เนื่องจากจะส่งคืนอาร์กิวเมนต์ ตัวอย่างด้านล่างส่งคืน ic| x: 12 จากนั้นไอซี| ญ: 48.

from icecream import ic
x = 12
def mult(x):
    return x*4
    y = mult(ic(x))
    ic(y)

การดีบักโดยใช้เครื่องมือ py-spy

คุณสามารถใช้ได้ py-spy เพื่อสร้างโปรไฟล์ตัวอย่างสำหรับโปรแกรม Python เป็นเครื่องมือในการดีบัก โดยไม่ต้องรีสตาร์ทโปรแกรมหรือแก้ไขโค้ดโปรแกรม py-spy จะแสดงภาพการทำงานของโปรแกรม Python ยิ่งไปกว่านั้น เนื่องจากมันเขียนด้วยภาษาสนิม มันจึงมีค่าใช้จ่ายที่ต่ำ

นอกจากนี้ ควรพิจารณาว่าการใช้ py-spy กับโค้ด Python ที่ใช้งานจริงนั้นปลอดภัย เพราะมันรันกระบวนการที่แตกต่างจากโปรแกรม Python ที่ทำโปรไฟล์

เช่นเดียวกับเครื่องมืออื่น ๆ ก่อนหน้านี้ที่เราเคยเห็น คุณสามารถใช้เครื่องมือ py-spy หลังจากติดตั้ง

pip install py-spy 

แม้ว่าโปรแกรม Python ของคุณจะให้บริการปริมาณการใช้งานจริง คุณยังคงสามารถสร้างโปรไฟล์และดีบักโปรแกรมนี้ได้โดยใช้ py-spy ทำให้เป็นเครื่องมือสร้างโปรไฟล์ Python ที่สำคัญ

ดีบักเกอร์ Viztracer

หรือคุณสามารถใช้ viztracer ซึ่งเป็นเครื่องมือดีบั๊ก เพื่อติดตามและแสดงภาพการทำงานของโปรแกรม Python ของคุณ นอกจากนี้ยังเป็นเครื่องมือสร้างโปรไฟล์ที่มีการบันทึกค่าโสหุ้ยต่ำ

  วิธีปรับแต่งเค้าโครงเอกสารแจกของ PowerPoint

สิ่งที่ทำให้ viztracer เครื่องมือแก้ไขข้อบกพร่องที่มีประสิทธิภาพ?

  • การใช้งานนั้นค่อนข้างง่าย และไม่ต้องพึ่งแพ็คเกจภายนอกในการทำงาน
  • Viztracer ทำงานบนแพลตฟอร์มระบบปฏิบัติการทั้งหมด: Windows, Linux หรือ macOS
  • ส่วนหน้าอันทรงพลังทำให้ติดตามระดับ GB ได้อย่างราบรื่น
  • มันใช้ RegEx เพื่อบันทึกฟังก์ชั่นที่กำหนดเองและข้อมูลเพิ่มเติมเช่น ตัวแปรและคุณลักษณะ, ยกข้อยกเว้น, ปฏิบัติการเก็บขยะฯลฯ โดยไม่ต้องแก้ไขส่วนโค้ดใดๆ ภายในซอร์สโค้ดของคุณ
  • สิ่งที่ทำให้ viztracer เป็นเครื่องมือแก้ไขข้อบกพร่องที่มีค่าใช้จ่ายต่ำคือความสามารถในการกรองข้อมูลที่คุณไม่ต้องการในโปรแกรมของคุณออก จากนั้นจะเก็บข้อมูลเก่าก่อนที่จะดัมพ์บันทึกในรูปแบบ JSON
  • คุณสามารถใช้เพื่อแทรกเหตุการณ์ที่กำหนดเองเช่น เหตุการณ์ทันทีที่ เหตุการณ์ตัวแปรและ เหตุการณ์ระยะเวลา ขณะที่โปรแกรมทำงาน วิธีนี้ทำงานเหมือนกับการดีบักการพิมพ์ ยกเว้น viztracer จะแจ้งให้คุณทราบเมื่อการพิมพ์เกิดขึ้นในขณะที่คุณติดตามข้อมูล

บทสรุป

การทำโปรไฟล์และการดีบักของ Python เช่นเดียวกับการทำโปรไฟล์ซอฟต์แวร์เป็นขั้นตอนสำคัญในการพัฒนาที่เรียกร้องความสนใจ ขั้นตอนนี้ช่วยแยกแยะส่วนโค้ดที่มีจุดบกพร่องออก เพื่อให้ประสิทธิภาพโดยรวมของโค้ดได้รับการปรับให้เหมาะสม

เครื่องมือแก้ไขข้อบกพร่องที่เรากล่าวถึงข้างต้นเป็นเครื่องมือที่มีประสิทธิภาพที่ทำให้นักพัฒนา Python ทำงานได้ง่าย

เมื่อเห็นว่าเครื่องมือดีบั๊กอื่นๆ ทำงานได้อย่างมีประสิทธิภาพมากกว่า cProfiler คุณก็สามารถดีบักโค้ด Python ของคุณเป็นฮีโร่ตัวจริง และแก้ไขจุดบกพร่องใดๆ ที่อาจเกิดขึ้นได้โดยใช้ตัวดีบั๊กเหล่านี้เพื่อป้องกันไม่ให้โค้ดของคุณทำงานโดยไม่หยุดทำงาน

มีความสุขในการแก้จุดบกพร่อง!

เรื่องล่าสุด

x