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


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.


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 ...)


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 ..


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.


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.