
บทนำ
GCC เป็นเครื่องมือที่สะดวกในการคอมไพล์ซอร์สโค้ดต่างๆ มี flags หลายตัวที่ใช้ได้ขณะทำงานกับ GCC เช่น flag -g การรันคำสั่งคอมไพล์พร้อม flag ที่กำหนดเหมาะสำหรับระบุผลลัพธ์ที่คาดหวังจากโค้ด บทความนี้เน้นที่ flag GCC -g เราจะเข้าใจว่า GCC -g flag คืออะไร ประโยชน์ และสาธิตการใช้งานด้วยตัวอย่างจริง
Flag GCC -g คืออะไร?
การคอมไพล์โค้ดยังเกี่ยวข้องกับการ debug ข้อผิดพลาดที่อาจเกิดขึ้นในโปรแกรม คุณอาจมีกรณีที่ต้องการข้อมูล debugging เกี่ยวกับโค้ดของคุณ ในกรณีนั้น คุณต้องทำงานกับ flag GCC -g
ตัวเลือกนี้ช่วยสร้างข้อมูล debugging เพิ่มเติมขณะคอมไพล์โค้ด ทำให้คุณ debug โค้ดได้ง่ายขึ้น بصفาผู้พัฒนา flag -g ช่วยให้เข้าใจโค้ดและ debug ได้ง่ายขึ้น ใช้งานกับไวยากรณ์ดังนี้:
gcc -g -o output-file input-program
โดย output-file คือชื่อโปรแกรมที่คอมไพล์แล้ว ส่วน input-program คือโค้ดเป้าหมายที่ต้องการคอมไพล์
นักพัฒนาทำ debugging มากเพื่อให้โค้ดทำงาน ตามที่คาดหวัง Debugging สำคัญในการระบุและแก้ไขปัญหา Flag GCC -g ให้ประโยชน์มากในการทำงานกับโปรแกรมอย่างราบรื่น
ประโยชน์ของ GCC -g Flag
1. การสร้าง Stack Trace
Stack trace หมายถึงรายงานของ active stack frames ที่เกิดระหว่างการรันโปรแกรม เมื่อโปรแกรม crash คุณจะได้ stack traces ที่จุดต่างๆ ในโปรแกรมที่โค้ดหยุดทำงาน เพื่อระบุว่าข้อผิดพลาดเกิดที่ไหนและวิธีแก้ไขที่ดีที่สุด Stack trace ยังเน้นลำดับของสถานะโปรแกรมเมื่อข้อผิดพลาดเกิดขึ้น ดังนั้นคุณจึงระบุลำดับเหตุการณ์ก่อนข้อผิดพลาดและวิธีแก้ไขได้ง่าย
2. การตรวจสอบตัวแปร (Variable Inspection)
ข้อมูล debugging ที่มาพร้อม flag -g ช่วย inspect ค่าของตัวแปรในโปรแกรมขณะรัน (runtime) คุณสามารถตรวจสอบได้ว่าตัวแปรอยู่ในสถานะไหนระหว่างรันโปรแกรม ดังนั้นจึงเข้าใจพฤติกรรมของโปรแกรมก่อนข้อผิดพลาดที่จุดต่างๆ ได้ง่าย
3. ข้อมูลสัญลักษณ์ (Symbolic Information)
เมื่อเพิ่ม flag -g คุณจะได้ข้อมูลสัญลักษณ์ที่เชื่อมโยงซอร์สโค้ดกับไบนารีที่คอมไพล์แล้ว ข้อมูลสัญลักษณ์รวมถึงเลขบรรทัดและชื่อตัวแปร วิธีนี้ช่วยให้คุณ map การทำงานของโปรแกรมกับโค้ดต้นฉบับได้ง่าย ทำให้วิเคราะห์และ debug ง่ายขึ้น
4. Conditional Breakpoints
การทำงานกับ debugger เช่น GDB ขึ้นอยู่กับข้อมูล debugging ที่สร้างด้วย flag -g เพื่อสร้าง breakpoints ชั่วคราวในซอร์สโค้ด Breakpoints ช่วยให้นักพัฒนากำหนดเงื่อนไขหรือส่วนในโปรแกรมที่โปรแกรมควรหยุด ดังนั้นคุณสามารถ debug ได้ง่ายโดยตั้ง breakpoints เพื่อตรวจสอบว่าส่วนไหนก่อให้เกิดข้อผิดพลาด การวิเคราะห์โปรแกรมผ่าน breakpoints ง่ายกว่าตรวจสอบโค้ดทั้งหมด
ตัวอย่างการใช้งาน GCC -g Flag
เราทำงานกับไฟล์ซอร์ส C ชื่อ "linuxhint.c" มาคอมไพล์ด้วย GCC -g flag:
gcc -g -o demo1 linuxhint.c

ด้วยการเพิ่ม flag -g คุณจะได้ไฟล์ binary ที่มีข้อมูล debugging และใช้กับ debugger ได้ เราตั้งชื่อ binary ว่า "demo1" มาใช้งานกับ GNU Debugger (GDB):
gdb demo1

GDB จะเปิดและคุณสามารถโต้ตอบ debug ได้ ตัวอย่าง ตั้ง breakpoint ที่บรรทัด 15 รันโปรแกรมพร้อม breakpoint และตรวจสอบตัวแปรต่างๆ ในโปรแกรม

ขอบคุณ flag GCC -g เราเข้าใจและทำงานกับ debugger ได้ง่ายเมื่อมีข้อมูล debugging เฉพาะเจาะจง นั่นคือวิธีใช้ GCC -g flag
สรุป
Flag GCC -g มีประโยชน์ในการสร้างข้อมูล debugging ที่ใช้วิเคราะห์และ debug โปรแกรมได้ เราอธิบายประโยชน์ของ GCC -g flag และให้ตัวอย่างการใช้งานขณะคอมไพล์โปรแกรมและขณะทำงานกับ debugger
เกี่ยวกับผู้เขียน

Denis Kariuki
Denis เป็นนักวิทยาการคอมพิวเตอร์ที่หลงใหลใน Networking และ Cyber Security ชอบ terminal และใช้ Linux เป็นงานอดิเรก มีความหลงใหลในการแบ่งปันเคล็ดลับและไอเดียเกี่ยวกับ Linux และคอมพิวติ้ง