โปรเซสจะสร้าง Core Dump เมื่อถูกระบบปฏิบัติการยุติการทำงานเนื่องจากข้อผิดพลาดในโปรแกรม สาเหตุที่พบบ่อยที่สุดคือ โปรแกรมเข้าถึงค่าพอยน์เตอร์ที่ไม่ถูกต้อง เช่น NULL หรือที่อยู่หน่วยความจำนอกพื้นที่ที่จัดสรรไว้ ระบบปฏิบัติการจะพยายามเขียนข้อมูลสถานะของโปรเซสลงไฟล์ เพื่อให้เราสามารถวิเคราะห์สาเหตุได้
ขั้นตอนการดีบัก Core Dump
- Core dump จะถูกสร้างไว้ที่
/proc/sys/kernelโดยค่าเริ่มต้น (อาจแตกต่างไปตามการตั้งค่าระบบ) - โปรแกรมต้องถูกคอมไพล์พร้อมตัวเลือก
-gเพื่อรวมข้อมูลดีบัก (debug symbols) - ใช้คำสั่ง GDB เพื่อเปิด core dump:
$ gdb nameOfExecutable core
คำสั่งนี้จะเปิด core dump ใน GDB และคุณสามารถเริ่มต้นการดีบักได้ทันที หากไม่คุ้นเคยกับ GDB สามารถอ่านคู่มือเพิ่มเติมได้ที่: IBM DeveloperWorks - GDB Tutorial
คำสั่ง GDB พื้นฐานที่ควรรู้
btหรือbacktrace– แสดง stack traceinfo locals– แสดงตัวแปรท้องถิ่นframe <n>– เปลี่ยนเฟรมสแต็กprint <variable>– แสดงค่าตัวแปร