Entry ที่แล้วเป็นการตามหาว่าตรงไหนทำให้เกิด EXC_BAD_ACCESS เองจากข้อมูลเพียงน้อยนิดที่ log ออกมาทาง console แต่สำหรับครั้งนี้จะเป็นการใช้ Instrument Tools ช่วยในการตามหาให้ ว่าจุดที่เป็นปัญหาอยู่ตรงไหน
เริ่มจากสั่ง Run -> Run with Performance Tool -> Allocations
หลังจาก Instruments รันขึ้นมาแล้วให้กดหยุดการทำงานทันที (ปุ่มวงกลมมีจุดแดงตรงกลาง) จากนั้นให้กดปุ่ม i ทางด้านขวาของ Allocations จะเห็น popup ปรากฏขึ้นมา ให้เลือก Record reference counts และ Enable NSZombie detection ดังรูป
จากนั้นกดปุ่ม Recrod เพื่อให้โปรแกรมทำงานต่ออีกครั้ง หากโปแกรมทำงานถึงจุดที่เกิด EXE_BAD_ACCESS เราจะเห็น popup ดังรูปด้านล่างแสดงขึ้นมา
ปัญหาก็ตามที่ popup บอก :) ให้กดปุมลูกศรที่อยู่ท้ายข้อความใน popup โปรแกรมจะบอกตัวการที่ทำให้เกิด EXE_BAD_ACCESS (สังเกตว่า Reference counts จะเป็น -1) และด้าน Stack Track ด้านขวามือบอกจุดที่ทำให้เกิดปัญหา ดังรูปด้านล่าง
ให้ Instruments ชี้จุดผิดชัดๆ ได้โดยการ double click ที่จุดผิดใน Stack Track จะพบบรรทัดที่ทำให้ผิดได้เลยทันที ไม่ต้องไล่หาเองแบบครั้งที่แล้วแล้ว
ค้นพบว่ามีคนทำวีดีโอให้ดูวิธีทำกันตัวเป็นๆ ที่นี่ด้วย
Related Link from Roti
เริ่มจากสั่ง Run -> Run with Performance Tool -> Allocations
หลังจาก Instruments รันขึ้นมาแล้วให้กดหยุดการทำงานทันที (ปุ่มวงกลมมีจุดแดงตรงกลาง) จากนั้นให้กดปุ่ม i ทางด้านขวาของ Allocations จะเห็น popup ปรากฏขึ้นมา ให้เลือก Record reference counts และ Enable NSZombie detection ดังรูป
จากนั้นกดปุ่ม Recrod เพื่อให้โปรแกรมทำงานต่ออีกครั้ง หากโปแกรมทำงานถึงจุดที่เกิด EXE_BAD_ACCESS เราจะเห็น popup ดังรูปด้านล่างแสดงขึ้นมา
ปัญหาก็ตามที่ popup บอก :) ให้กดปุมลูกศรที่อยู่ท้ายข้อความใน popup โปรแกรมจะบอกตัวการที่ทำให้เกิด EXE_BAD_ACCESS (สังเกตว่า Reference counts จะเป็น -1) และด้าน Stack Track ด้านขวามือบอกจุดที่ทำให้เกิดปัญหา ดังรูปด้านล่าง
ให้ Instruments ชี้จุดผิดชัดๆ ได้โดยการ double click ที่จุดผิดใน Stack Track จะพบบรรทัดที่ทำให้ผิดได้เลยทันที ไม่ต้องไล่หาเองแบบครั้งที่แล้วแล้ว
ค้นพบว่ามีคนทำวีดีโอให้ดูวิธีทำกันตัวเป็นๆ ที่นี่ด้วย
Related Link from Roti





0 comments:
Post a Comment