Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

วิธีดีบัก Core Dump ใน C/C++


โปรเซสจะสร้าง Core Dump เมื่อถูกระบบปฏิบัติการยุติการทำงานเนื่องจากข้อผิดพลาดในโปรแกรม สาเหตุที่พบบ่อยที่สุดคือ โปรแกรมเข้าถึงค่าพอยน์เตอร์ที่ไม่ถูกต้อง เช่น NULL หรือที่อยู่หน่วยความจำนอกพื้นที่ที่จัดสรรไว้ ระบบปฏิบัติการจะพยายามเขียนข้อมูลสถานะของโปรเซสลงไฟล์ เพื่อให้เราสามารถวิเคราะห์สาเหตุได้

ขั้นตอนการดีบัก Core Dump

  1. Core dump จะถูกสร้างไว้ที่ /proc/sys/kernel โดยค่าเริ่มต้น (อาจแตกต่างไปตามการตั้งค่าระบบ)
  2. โปรแกรมต้องถูกคอมไพล์พร้อมตัวเลือก -g เพื่อรวมข้อมูลดีบัก (debug symbols)
  3. ใช้คำสั่ง GDB เพื่อเปิด core dump:
$ gdb nameOfExecutable core

คำสั่งนี้จะเปิด core dump ใน GDB และคุณสามารถเริ่มต้นการดีบักได้ทันที หากไม่คุ้นเคยกับ GDB สามารถอ่านคู่มือเพิ่มเติมได้ที่: IBM DeveloperWorks - GDB Tutorial

คำสั่ง GDB พื้นฐานที่ควรรู้

  • bt หรือ backtrace – แสดง stack trace
  • info locals – แสดงตัวแปรท้องถิ่น
  • frame <n> – เปลี่ยนเฟรมสแต็ก
  • print <variable> – แสดงค่าตัวแปร