การสร้างเวอร์ชันดีบัก
คู่มือนี้จะอธิบาย เวิร์กโฟลว์การแก้ไขจุดบกพร่องในตัวเครื่อง สำหรับ 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/scriptsDebug Build + Launch (ค่าเริ่มต้น)
ใช้สิ่งนี้สำหรับเซสชันการดีบักปกติ
bash lumi-debug-local.sh lumi-dev buildคำสั่งนี้:
- สร้าง Lumi ในโหมดแก้ไขข้อบกพร่อง
- ตรวจสอบสัญลักษณ์การดีบัก
- เปิดตัว Lumi ภายใต้ GDB
Debug Build เท่านั้น (สำหรับ 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 บันทึกย้อนหลัง และกู้คืนข้อมูลข้อขัดข้องที่เป็นประโยชน์ได้
ตัวเลือกเสริม: การดีบักระยะไกล/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
# Full release reset of all major components
bash lumi-debug-reset-release.sh lumi-dev
# Optional faster local-only variant
bash lumi-build-script.sh --scope build --dir lumi-dev --type debugoptimized