Cara "mengatur breakpoint di malloc_error_break ke debug"

126

Saya mendapatkan banyak output konsol seperti ini tanpa aplikasi saya mogok:

malloc: * kesalahan untuk objek 0xc6a3970: pointer yang dibebaskan tidak dialokasikan * atur breakpoint di malloc_error_break ke debug

Bagaimana saya bisa mengetahui objek atau variabel mana yang terpengaruh?

Saya mencoba menetapkan breakpoint simbolis seperti ini tetapi tidak pernah berhenti:

masukkan deskripsi gambar di sini

openfrog
sumber
1
Saya mengatasi masalah ini dengan menonaktifkan safari inspect. stackoverflow.com/a/43885754/6521116
Kris Roofe
Salah satu penyebabnya adalah fungsi / metode yang seharusnya mengembalikan objek dan mencapai akhir fungsi dan tidak mengembalikan apa pun.
Xofo

Jawaban:

136

Atur breakpoint pada malloc_error_break () dengan membuka Breakpoint Navigator (View-> Navigators-> Show Breakpoint Navigator atau ⌘7), mengklik tombol tambah di sudut kiri bawah, dan memilih "Add Symbolic Breakpoint". Di munculan yang muncul, masukkan malloc_error_breakdi bidang Simbol, lalu klik Selesai.

EDIT: openfrog menambahkan tangkapan layar dan menunjukkan bahwa dia sudah mencoba langkah-langkah ini tanpa hasil setelah saya memposting jawaban saya. Dengan suntingan itu, saya tidak yakin harus berkata apa. Saya belum melihat itu gagal bekerja sendiri, dan memang saya selalu menyimpan breakpoint pada set malloc_error_break.

Andrew Madsen
sumber
2
Ini bekerja untuk saya (tanpa modul). Penyebab masalah bagi saya adalah karena saya UIImagedidukung oleh file, dan saya menimpa file dengan gambar yang berbeda. Ini menyebabkan kesalahan ketika saya memanggil UIImagePNGRepresentationgambar asli (bukan ketika file itu sebenarnya ditimpa).
Robert
Saya tidak mendapatkan tombol tambah di sudut kiri bawah ⌘7bilah ... Mungkin maksud Anda ⌘8?
ScottyBlades
@ScottyBlades menebak pintasan telah berubah. Saya menulis jawaban ini 8 tahun dan 7 versi Xcode utama yang lalu ...
Andrew Madsen
@AndrewMadsen Jangan khawatir, hanya memeriksa apakah masuk akal untuk mengedit.
ScottyBlades
46

Di tangkapan layar Anda, Anda tidak menentukan modul apa pun: coba atur "libsystem_c.dylib"

masukkan deskripsi gambar di sini

Saya melakukan itu, dan itu berhasil: breakpoint berhenti di sini (meskipun stacktrace sering naik dari beberapa sistem yang tidak jelas ...)

Vinzzz
sumber
7
Tampak seperti nama modul berbeda di iOS, itu: libsystem_malloc.dylib. Breakpoint bekerja untuk saya tanpa menentukan modul.
Nestor
6

Saya memiliki masalah yang sama dengan Xcode. Saya mengikuti langkah yang Anda berikan dan itu tidak berhasil. Saya menjadi gila karena di setiap forum yang saya lihat, semua petunjuk untuk masalah ini adalah yang Anda berikan. Saya akhirnya melihat saya meletakkan spasi setelah malloc_error_break, saya menekannya dan sekarang berfungsi. Masalah bodoh, tetapi jika solusinya tidak berhasil, pastikan Anda belum memasukkan spasi apa pun sebelum dan sesudah malloc_error_break.

Semoga pesan ini akan membantu ..

Sébastien
sumber
4

Saya telah memberikan izin yang tidak seharusnya saya tulis di beberapa folder (terutama / usr / bin /), dan itu menyebabkan masalah. Saya memperbaikinya dengan membuka Disk Utility dan menjalankan 'Perbaiki Disk Izin' pada disk HD Macintosh.

pengguna3843991
sumber
Terima kasih, ini memperbaiki mesin borked saya.
Matt Fletcher
2

Saya menyelesaikannya dengan inspektur safari dekat. Lihat posting saya . Saya juga menemukan suara kadang-kadang ketika saya menjalankan aplikasi saya untuk pengujian, kemudian saya buka safari dengan inspektur otomatis aktif, setelah ini, saya melakukan beberapa tindakan di aplikasi saya kemudian masalah ini terpicu.

masukkan deskripsi gambar di sini

Kris Roofe
sumber