วิธี“ ตั้งค่าเบรกพอยต์ใน malloc_error_break เพื่อแก้จุดบกพร่อง”


126

ฉันได้รับเอาต์พุตคอนโซลจำนวนมากเช่นนี้โดยที่แอปพลิเคชันของฉันหยุดทำงาน:

malloc: * ข้อผิดพลาดสำหรับอ็อบเจ็กต์ 0xc6a3970: ตัวชี้ที่เป็นอิสระไม่ได้รับการจัดสรร *ตั้งค่าเบรกพอยต์ใน malloc_error_break เพื่อแก้จุดบกพร่อง

ฉันจะทราบได้อย่างไรว่าวัตถุหรือตัวแปรใดได้รับผลกระทบ

ฉันพยายามตั้งค่าเบรกพอยต์เชิงสัญลักษณ์เช่นนี้ แต่มันไม่เคยหยุด:

ใส่คำอธิบายภาพที่นี่


1
ฉันแก้ปัญหานี้โดยปิดการใช้งานการตรวจสอบซาฟารี stackoverflow.com/a/43885754/6521116
Kris Roofe

หนึ่งในสาเหตุของสิ่งนี้คือฟังก์ชัน / วิธีการที่ควรจะส่งคืนวัตถุและเมื่อสิ้นสุดฟังก์ชันและไม่ส่งคืนอะไรเลย
Xofo

คำตอบ:


136

ตั้งค่าเบรกพอยต์บน malloc_error_break () โดยเปิด Breakpoint Navigator (View-> Navigators-> Show Breakpoint Navigator หรือ⌘7) คลิกปุ่มบวกที่มุมล่างซ้ายและเลือก "Add Symbolic Breakpoint" ในป๊อปอัปที่ปรากฏขึ้นให้ป้อนmalloc_error_breakในช่องสัญลักษณ์จากนั้นคลิกเสร็จสิ้น

แก้ไข: openfrog เพิ่มภาพหน้าจอและระบุว่าเขาได้ลองทำตามขั้นตอนเหล่านี้แล้วโดยไม่ประสบความสำเร็จหลังจากที่ฉันโพสต์คำตอบ ด้วยการแก้ไขนั้นฉันไม่แน่ใจว่าจะพูดอะไร ฉันไม่เห็นว่าความล้มเหลวในการทำงานด้วยตัวเองและแน่นอนฉันมักจะเก็บเบรกพอยต์ไว้ที่ชุด malloc_error_break


2
สิ่งนี้ใช้ได้ผลสำหรับฉัน (ไม่มีโมดูล) สาเหตุของปัญหาสำหรับฉันคือฉันได้UIImageรับการสนับสนุนจากไฟล์และฉันเขียนทับไฟล์ด้วยรูปภาพอื่น สิ่งนี้ทำให้เกิดข้อผิดพลาดเมื่อฉันเรียกUIImagePNGRepresentationภาพต้นฉบับ (ไม่ใช่เมื่อไฟล์ถูกเขียนทับจริง)
Robert

1
ฉันไม่ได้รับปุ่มบวกที่มุมล่างซ้ายของ⌘7แถบ ... บางทีคุณอาจหมายถึง⌘8?
ScottyBlades

@ScottyBlades การคาดเดาทางลัดมีการเปลี่ยนแปลง ฉันเขียนคำตอบนี้เมื่อ 8 ปีและ 7 Xcode เวอร์ชันหลักที่ผ่านมา ...
Andrew Madsen

@AndrewMadsen ไม่ต้องกังวลเพียงแค่ตรวจสอบว่าเหมาะสมที่จะแก้ไขหรือไม่
ScottyBlades

46

ในภาพหน้าจอคุณไม่ได้ระบุโมดูลใด ๆ ลองตั้งค่า "libsystem_c.dylib"

ใส่คำอธิบายภาพที่นี่

ฉันทำอย่างนั้นและได้ผล: เบรกพอยต์หยุดที่นี่ (แม้ว่า stacktrace มักจะเพิ่มขึ้นจาก lib ของระบบที่คลุมเครือ ... )


7
ดูเหมือนว่าชื่อโมดูลที่แตกต่างกันใน iOS libsystem_malloc.dylibก็: เบรกพอยต์ใช้งานได้สำหรับฉันโดยไม่ต้องระบุโมดูล
Nestor

6

ฉันมีปัญหาเดียวกันกับ Xcode ฉันทำตามขั้นตอนที่คุณให้ไว้ แต่มันไม่ได้ผล ฉันกลายเป็นบ้าเพราะในทุกๆฟอรัมที่ฉันเห็นเบาะแสทั้งหมดสำหรับปัญหานี้คือสิ่งที่คุณให้ ในที่สุดฉันก็เห็นว่าฉันวางช่องว่างหลังจาก malloc_error_break ฉันระงับมันและตอนนี้มันใช้งานได้ ปัญหาโง่ ๆ แต่ถ้าวิธีแก้ไม่ได้ผลอย่าลืมเว้นวรรคก่อนและหลัง malloc_error_break

หวังว่าข้อความนี้จะช่วย ..


4

ฉันได้รับสิทธิ์ที่ฉันไม่ควรต้องเขียนในบางโฟลเดอร์ (โดยเฉพาะ / usr / bin /) และนั่นทำให้เกิดปัญหา ฉันแก้ไขโดยเปิด Disk Utility แล้วเรียกใช้ 'Repair Disk Permissions' บนดิสก์ Macintosh HD


ขอบคุณสิ่งนี้ได้แก้ไขเครื่อง borked ของฉัน
Matt Fletcher

2

ฉันแก้ปัญหาโดยเจ้าหน้าที่ตรวจสอบซาฟารีอย่างใกล้ชิด อ้างถึงหนังสือของฉันโพสต์ ฉันยังพบว่ามีเสียงบางครั้งเมื่อฉันเรียกใช้แอปเพื่อทดสอบจากนั้นฉันจึงเปิดซาฟารีโดยเปิดตัวตรวจสอบอัตโนมัติหลังจากนี้ฉันจะดำเนินการบางอย่างในแอปของฉันจากนั้นปัญหานี้ก็เกิดขึ้น

ใส่คำอธิบายภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.