0Pricing
C++ Academy · درس

استخدام gdb وlldb

تتبّع تنفيذ البرامج خطوة بخطوة

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

مصححات الأخطاء التفاعلية

يتيح لك كل من gdb (GNU) وlldb (LLVM) إيقاف برنامج قيد التشغيل مؤقتًا، وفحص المتغيرات، والتنقل في الشفرة سطرًا بعد سطر. وأوامرهما متشابهة.

الترجمة مع معلومات التصحيح

أنشئ البرنامج دائمًا باستخدام -g (ويُفضّل أيضًا -O0) حتى يتمكن المصحح من ربط الشفرة الآلية بشفرتك المصدرية.

g++ -g -O0 main.cpp -o app
# then
gdb ./app

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

توقف نقطة التوقف التنفيذ مؤقتًا عند موضع تختاره.

  • gdb: break main.cpp:10 أو break myFunc
  • lldb: breakpoint set --file main.cpp --line 10 أو b myFunc

تشغيل البرنامج

ابدأ التنفيذ باستخدام run (أو r). سيتوقف البرنامج عند أول نقطة توقف يصل إليها، ليصبح جاهزًا للفحص.

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

أوامر التنقل الأساسية، بالأسماء نفسها في gdb وlldb:

  • next / n: تنفيذ سطر واحد مع تجاوز الاستدعاءات
  • step / s: الدخول إلى الاستدعاء خطوة بخطوة
  • finish: التنفيذ حتى تُرجع الدالة الحالية النتيجة
  • continue / c: استئناف التنفيذ حتى نقطة التوقف التالية

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

اطبع القيم لفهم حالة البرنامج.

  • gdb: print x، print arr[2]
  • lldb: frame variable أو p x

هدف جلسة نموذجية

تأمل هذا البرنامج؛ فقد تضع نقطة توقف عند الحلقة وتطبع sum في كل تكرار.

#include <iostream>

int main() {
    int sum = 0;
    for (int i = 1; i <= 3; ++i) {
        sum += i;
    }
    std::cout << sum << "\n";
    return 0;
}

مكدس الاستدعاءات

عند توقف البرنامج، يعرض backtrace (في gdb) أو bt (في lldb) سلسلة استدعاءات الدوال. استخدم frame N للانتقال إلى الدالة المستدعية وفحص متغيراتها المحلية.

نقاط المراقبة

توقف نقطة المراقبة البرنامج عند تغيّر قيمة متغير، مما يساعدك على معرفة موضع حدوث التعديلات غير المتوقعة.

  • gdb: watch counter
  • lldb: watchpoint set variable counter

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

أوقف التنفيذ فقط عند تحقق شرط، لتتجنب التنقل اليدوي خطوة بخطوة.

  • gdb: break loop.cpp:5 if i == 99
  • lldb: breakpoint set --line 5 --condition "i == 99"

تصحيح أعطال الانهيار

شغّل البرنامج المتسبب في الانهيار تحت إشراف المصحح؛ فعند حدوث خطأ تقسيم، سيتوقف عند السطر الذي وقع فيه الخطأ. ثم استخدم bt لمعرفة كيفية وصول التنفيذ إلى ذلك الموضع. ويمكنك أيضًا تحليل تفريغ الذاكرة الأساسي لاحقًا.

تحقق سريع

تذكّر أوامر التنقل خطوة بخطوة.

مراجعة

لقد تعلّمتم تصحيح الأخطاء التفاعلي.

  • أنشئوا البرنامج باستخدام -g -O0
  • عيّنوا نقاط التوقف، ثم استخدموا run وبعده next/step/finish
  • افحصوا القيم باستخدام print/frame variable وbacktrace
  • تستهدف نقاط المراقبة ونقاط التوقف الشرطية الأخطاء الصعبة

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

هل درس «استخدام gdb وlldb» مجاني؟

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

ماذا ستتعلم في «استخدام gdb وlldb»؟

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

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

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

كم من الوقت يستغرق درس «استخدام gdb وlldb»؟

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

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

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

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

  1. استخدام gdb وlldb
  2. AddressSanitizer
  3. UBSan وTSan
  4. أساسيات Valgrind
← العودة إلى C++ Academy