0Pricing
Python Academy · درس

تصحيح الأخطاء باستخدام pdb

استخدم مصحّح الأخطاء المضمّن في Python للتنقّل خلال الشيفرة تفاعلياً

تصحيح الأخطاء باستخدام pdb درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.

ما هو pdb؟

‏pdb هو مصحّح الأخطاء التفاعلي المضمّن في Python. ويتيح لكم إيقاف التنفيذ وفحص المتغيرات والتنقل بين أسطر الشيفرة خطوةً خطوة.

import pdb

def faulty(n):
    result = n * 2
    pdb.set_trace()   # execution pauses here
    return result + 1

faulty(5)

breakpoint() — Python 3.7+

‏breakpoint() اختصار مضمّن لـ import pdb; pdb.set_trace(). وهو يحترم متغير البيئة PYTHONBREAKPOINT.

def process(data):
    for item in data:
        if item < 0:
            breakpoint()   # drop into pdb here
        print(item)

process([1, -2, 3])

أوامر pdb الأساسية

الأوامر الأساسية: n (السطر التالي)، s (الدخول إلى الدالة)، c (المتابعة)، q (الخروج)، p expr (الطباعة)، l (عرض الشيفرة المصدرية).

# Inside pdb prompt:
# (Pdb) n          — execute next line
# (Pdb) s          — step into function
# (Pdb) c          — continue to next breakpoint
# (Pdb) p my_var   — print value
# (Pdb) l          — show source around current line
# (Pdb) q          — quit

فحص المتغيرات

استخدموا p لطباعة تعبير، وpp للطباعة المنسّقة، وlocals() لعرض جميع المتغيرات المحلية.

# (Pdb) p data
# [1, -2, 3]
# (Pdb) pp {"key": "value", "num": 42}
# {'key': 'value',
#  'num': 42}
# (Pdb) p locals()

نقاط التوقف الشرطية

اضبطوا نقاط توقف شرطية لإيقاف التنفيذ فقط عندما يكون الشرط صحيحًا، وتجنبوا بذلك التقدم المتكرر خطوةً خطوة.

import pdb

def process(items):
    for i, item in enumerate(items):
        if item < 0:   # manual condition
            pdb.set_trace()
        result = item * 2

# Or inside pdb: b filename.py:12, x < 0

تصحيح الأخطاء بعد التوقف

افحص الحالة مباشرةً بعد حدوث استثناء غير مُعالج باستخدام pdb.post_mortem()، أو شغّل البرنامج النصي باستخدام python -m pdb script.py.

import pdb

try:
    1 / 0
except ZeroDivisionError:
    pdb.post_mortem()   # inspect at the crash point

# Or from CLI:
# python -m pdb my_script.py

مراقبة المتغيرات باستخدام w وwhere

يطبع w (where) تتبّع مكدس الاستدعاءات الحالي، لتعرف كيف وصلت إلى الإطار الحالي.

# (Pdb) w
# /app/main.py(10)main()
# -> process([1,-2,3])
# /app/main.py(5)process()
# -> breakpoint()

التنقل بين الإطارات

ينقلك u (up) وd (down) بين إطارات مكدس الاستدعاءات، لتتمكن من فحص المتغيرات في الدوال المستدعية.

# (Pdb) u   — move to calling frame
# (Pdb) d   — move back down
# (Pdb) p data   — inspect variable in that frame

ipdb — مصحح أخطاء متقدم

يُغلّف ipdb أداة pdb بميزات IPython، مثل الإكمال باستخدام زر الجدولة، وتمييز بناء الجملة، والأوامر السحرية.

# pip install ipdb
import ipdb

def calc(x):
    ipdb.set_trace()
    return x ** 2

calc(7)

pudb — مصحح أخطاء مرئي في الطرفية

يوفّر pudb مصحح أخطاء TUI بملء الشاشة داخل الطرفية، مع لوحات للتعليمات البرمجية والمتغيرات والمكدس.

# pip install pudb
# python -m pudb my_script.py

import pudb

def run():
    pudb.set_trace()
    data = [1, 2, 3]
    return sum(data)

تعطيل نقاط التوقف في CI

اضبط PYTHONBREAKPOINT=0 لجعل جميع استدعاءات breakpoint() بلا تأثير في CI أو الإنتاج.

# In CI pipeline:
# export PYTHONBREAKPOINT=0
# python my_script.py
# breakpoint() is silently skipped

تحقق سريع

ما أمر pdb الذي يواصل التنفيذ حتى نقطة التوقف التالية؟

مراجعة

استخدم breakpoint() لإيقاف التنفيذ والدخول إلى pdb. الأوامر الأساسية هي: n وs وc وp وq. وللحصول على تجربة أكثر ثراءً، جرّب ipdb أو pudb. عطّل ذلك باستخدام PYTHONBREAKPOINT=0 في CI.

الأسئلة الشائعة

هل درس «تصحيح الأخطاء باستخدام pdb» مجاني؟

نعم — نص درس «تصحيح الأخطاء باستخدام pdb» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.

ماذا ستتعلم في «تصحيح الأخطاء باستخدام pdb»؟

استخدم مصحّح الأخطاء المضمّن في Python للتنقّل خلال الشيفرة تفاعلياً تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟

لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «تصحيح الأخطاء باستخدام pdb»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟

نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات الوحدة logging
  2. المعالجات والمنسّقات والمرشحات
  3. التسجيل المنظّم
  4. تصحيح الأخطاء باستخدام pdb
← العودة إلى Python Academy