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: เริ่มการทำงานของโปรแกรมภายใน GDB
  • next: ทำงานบรรทัดถัดไปโดยไม่เข้าไปในฟังก์ชัน
  • 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 และยังคงเป็นทักษะสำคัญในเครื่องมือของผู้พัฒนา