Memory Debugging ด้วย Valgrind (ภาค 2 - ตีแผ่ Error แบบต่างๆ)
ต่อจากคราวก่อนนะครับ คราวนี้เราจะมาดูกันว่า Valgrind สามารถ ตรวจจับ Error แบบไหนได้บ้าง แล้วมันฟ้องออกมายังไงกัน
1. อ่านข้อมูลผิด (Invalid Read)
ต่อจากคราวก่อนนะครับ คราวนี้เราจะมาดูกันว่า Valgrind สามารถ ตรวจจับ Error แบบไหนได้บ้าง แล้วมันฟ้องออกมายังไงกัน
1. อ่านข้อมูลผิด (Invalid Read)
เช้าวันนึงขณะที่ผมกำลังทำงาน ก็พบขึ้นมาว่าโปรเจคที่ตัวเองทำอยู่ จู่ๆมันก็พังขึ้นมาตอนรันซะงั้น (ได้ไง T_T) มองผ่านๆก็ยังหา Error ไม่เจอซักที รู้แต่มันฟ้องว่ามีปัญหาที่การจัดการ Memory (เป็นที่ฟังก์ชัน realloc กับ free) ผมจึงเริ่มไปค้นว่ามีวิธีไหนบ้างมั้ย ที่จะช่วยเช็คว่าปัญหาอยู่ตรงไหนกันแน่ เพราะตอนนั้นหายังไงก็หาไม่เจอจริงๆ (เป็นโค้ดที่คนอื่นเขียน ผมอ่านแล้วก็มึนๆเล็กน้อย) ลองหาตามบอร์ดก็เลยไปเจอเจ้า tool ตัวนึงที่ชื่อ Valgrind ซึ่งหลังจากลองใช้แล้วก็พบว่าปาฏิหาริย์มีจริง มันหาตำแหน่งของโค้ดที่จัดการกับ Memory ไม่ถูกต้องให้ได้ดีทีเดียว