C:
การใช้งานโปรแกรมดีบักเกอร์
วิธีการ:
GDB (GNU Debugger) เป็น debugger ที่ใช้กันมากที่สุดสำหรับการเขียนโปรแกรมภาษา C นี่คือคู่มือสั้น ๆ เกี่ยวกับการใช้ GDB ในการดีบักโปรแกรม C ง่าย ๆ
ก่อนอื่น คอมไพล์โปรแกรม C ของคุณด้วย flag -g
เพื่อรวมข้อมูลการดีบัก:
gcc -g program.c -o program
จากนั้น เริ่ม GDB พร้อมกับโปรแกรมที่คอมไพล์แล้ว:
gdb ./program
คุณสามารถใช้คำสั่งต่าง ๆ ใน GDB เพื่อควบคุมการทำงานของมัน ต่อไปนี้เป็นคำสั่งพื้นฐานบางส่วน:
break
: ตั้งจุดหยุดที่บรรทัดหรือฟังก์ชันที่ระบุเพื่อหยุดการทำงาน- ตัวอย่าง:
break 10
หรือbreak main
- ตัวอย่าง:
run
: เริ่มการทำงานของโปรแกรมภายใน GDBnext
: ทำงานบรรทัดถัดไปโดยไม่เข้าไปในฟังก์ชันstep
: ทำงานบรรทัดต่อไปโดยเข้าไปในฟังก์ชันprint
: แสดงค่าของตัวแปรcontinue
: ดำเนินการต่อจนถึงจุดหยุดถัดไปquit
: ออกจาก GDB
นี่คือตัวอย่างของการดีบักโปรแกรมง่าย ๆ:
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 5; i++) {
printf("%d\n", i);
}
return 0;
}
คอมไพล์และเริ่ม GDB ตามที่อธิบายไว้ ตั้งจุดหยุดที่บรรทัดของ printf
ด้วย break 5
แล้ว run
ใช้ next
เพื่อเดินผ่านลูป และ print i
เพื่อตรวจสอบตัวแปรลูป
ผลลัพธ์ตัวอย่างหลังจากตั้งจุดหยุดและก่อนการทำซ้ำครั้งแรก:
Breakpoint 1, main () at program.c:5
5 printf("%d\n", i);
ใช้ print i
หลังจากทำซ้ำหลายครั้ง:
$3 = 2
นี่แสดงการตรวจสอบสภาพและการไหลของโปรแกรมง่าย ๆ
ข้อลึก
แนวคิดของการดีบักได้พัฒนาขึ้นอย่างมากตั้งแต่ยุคแรก ๆ ของการเขียนโปรแกรม ที่แมลงจริง ๆ (แมลงตัวจริง) อาจทำให้เกิดปัญหาในคอมพิวเตอร์เชิงกล ในปัจจุบัน debugger เช่น GDB มีฟีเจอร์ที่ซับซ้อนกว่าการก้าวเดินและตรวจสอบตัวแปรเบื้องต้น เช่น การดีบักย้อนกลับ (ทำงานโปรแกรมย้อนหลัง) จุดหยุดเงื่อนไข และการเขียนสคริปต์สำหรับงานการดีบักอัตโนมัติ
ในขณะที่ GDB เป็นเครื่องมือที่ทรงพลังและใช้กันอย่างแพร่หลาย อาจยากและท้าทายสำหรับผู้เริ่มต้น ตัวเลือกเครื่องมือการดีบักและ IDE (สภาพแวดล้อมการพัฒนาแบบบูรณาการ) เช่น Visual Studio Code, CLion, หรือ Eclipse นำเสนออินเทอร์เฟซที่เป็นมิตรกับผู้ใช้มากขึ้นสำหรับการดีบักโค้ดภาษา C โดยมักจะรวมเอฟเฟกต์ภาพและการควบคุมที่ชัดเจนกว่า ตัวเลือกเหล่านี้อาจไม่มีความลึกของฟังก์ชันเต็มรูปแบบของ GDB แต่สามารถเข้าถึงได้ง่ายกว่าสำหรับผู้ที่เพิ่งเริ่มต้นเขียนโปรแกรมภาษา C
นอกจากนี้ การปรากฏตัวของโปรโตคอลเซิร์ฟเวอร์ภาษาและมาตรฐานการดีบักได้ช่วยให้มีโซลูชันการดีบักแบบข้ามแพลตฟอร์ม เพิ่มประสบการณ์การดีบักให้สอดคล้องกันมากขึ้นทั่วทุกเครื่องมือและสภาพแวดล้อม แม้ว่าจะมีความก้าวหน้าเหล่านี้ การเรียนรู้ถึงความลึกของ debugger แบบดั้งเดิมเช่น GDB ให้ข้อมูลเชิงลึกอันมีค่าเกี่ยวกับการทำงานของโปรแกรมภาษา C และยังคงเป็นทักษะสำคัญในเครื่องมือของผู้พัฒนา