بناء نسخة تصحيح
يصف هذا الدليل سير عمل التصحيح المحلي لـ Lumi باستخدام السكربتات في build/lumi/scripts.
صُمّم سير العمل لـ:
- استخدام مخرجات البناء المحلية (دون الحاجة إلى تنزيل الرموز)،
- التحقق من وجود رموز التصحيح فعليًا،
- تشغيل GDB بوضع الرموز دون اتصال افتراضيًا.
المتطلبات الأساسية
- Linux مبني على Debian (خط أساس المشروع: Debian 13)
- شجرة مصدر Lumi مستنسخة مسبقًا
إعداد GDB لمرة واحدة (اختياري لكن موصى به)
ثبّت أدوات GDB:
sudo apt update
sudo apt install gdb gdbserverإعداد تسجيل محلي اختياري:
mkdir -p ~/code/gdb_logs
cat > ~/.gdbinit <<'EOF'
set logging file ~/code/gdb_logs/gdb_log.txt
set logging enabled on
set logging overwrite on
EOFملاحظة: تعطّل سكربتات التصحيح المحلية في Lumi debuginfod افتراضيًا للإبقاء على حل الرموز محليًا وقابلًا للتكرار.
بداية سريعة
من دليل السكربتات:
cd ~/code/lumi-dev/build/lumi/scriptsبناء تصحيح + تشغيل (افتراضي)
استخدم هذا لجلسات التصحيح العادية.
bash lumi-debug-local.sh lumi-dev buildينفّذ هذا الأمر:
- بناء Lumi في وضع التصحيح،
- التحقق من رموز التصحيح،
- تشغيل Lumi تحت GDB.
بناء تصحيح فقط (لجلسة TTY/بعيدة لاحقة)
استخدم هذا عندما تريد البناء الآن والتشغيل/التصحيح لاحقًا.
bash lumi-build-debug.sh lumi-dev buildاستخدام TTY في Linux
غالبًا ما تكون وحدات TTY (الطرفيات النصية) الطريقة الأكثر موثوقية لتصحيح التجمّد الشديد.
- انتقل إلى TTY بـ
Ctrl + Alt + F1حتىCtrl + Alt + F6 - سجّل الدخول من موجه النص
- عد إلى الجلسة الرسومية بـ
Ctrl + Alt + F7(أوF2في بعض الأنظمة)
لماذا يهم ذلك: إذا توقفت جلسة سطح المكتب، غالبًا ما يستمر TTY بالاستجابة، فيمكنك إرفاق GDB والتقاط backtrace واستعادة بيانات مفيدة عن العطل.
اختياري: تصحيح بعيد/عبر TTY
للتجمّد الشديد أو تعلّق العرض، استخدم gdbserver:
cd ~/code/lumi-dev/build/lumi/scripts
bash gdbserver.shثم من TTY (موصى به لسيناريوهات التجمّد) أو من طرفية أخرى:
gdb /home/mark/code/lumi-dev/bin/lumi-0.1
(gdb) target remote localhost:9999
(gdb) continueلتشغيل GDB محليًا (مسار غير TTY):
bash lumi-debug-launch.sh --repo lumi-devملاحظة الأداء
بناءات التصحيح أبطأ بالتصميم. عند انتهاء التصحيح، عد إلى بناء أسرع:
cd ~/code/lumi-dev/build/lumi/scripts
# إعادة ضبط كاملة لجميع المكوّنات الرئيسية إلى الإصدار
bash lumi-debug-reset-release.sh lumi-dev
# متغيّر محلي أسرع اختياري
bash lumi-build-script.sh --scope build --dir lumi-dev --type debugoptimized