C/C++

Memory Debugging ด้วย Valgrind (ภาค 2 - ตีแผ่ Error แบบต่างๆ)

ต่อจากคราวก่อนนะครับ คราวนี้เราจะมาดูกันว่า Valgrind สามารถ ตรวจจับ Error แบบไหนได้บ้าง แล้วมันฟ้องออกมายังไงกัน

1. อ่านข้อมูลผิด (Invalid Read)

Taxonomy upgrade extras: 

Memory Debugging ด้วย Valgrind

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

Taxonomy upgrade extras: 

Subscribe to RSS - C/C++