Я получаю следующее сообщение об ошибке при попытке запустить приложение IOS я разрабатываю:Отладка бесплатно() с Xcode
appname(6097,0x3e835d98) malloc: *** error for object 0x20104600: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Как я могу узнать, какие позвонить в free()
возникла ошибка? Если добавить точку останова для malloc_error_break
, весь стек трассировки я получаю вызов «malloc_error_break
», который выглядит следующим образом:
libsystem_c.dylib`malloc_error_break:
0x32f20fa8: push {r7, lr} < Thread 1: breakpoint 1.1
0x32f20faa: mov r7, sp
0x32f20fac: nop
0x32f20fae: nop
0x32f20fb0: pop {r7, pc}
0x32f20fb2: nop
Если я не добавить точку останова для malloc_error_break
, я получаю так же бесполезно стек trace, но на этот раз всего лишь __pthread_kill
и инструкцию ассемблера.
Есть ли что-нибудь еще, что я могу сделать, чтобы получить лучшее представление о коде, который сгенерировал эту ошибку?
Что это за приложение, использующее malloc() и free()? Разве вы не используете Objective-C? –
Вы пытались профилировать память с помощью инструментов? – Sulthan
@ Султан, я попробовал инструменты, но я тоже не нашел ничего полезного. Но, может быть, я не ищу в нужном месте ... Все, что я вижу во время отладки Memory Allocations с помощью инструментов, - это именно то, что касается распределения, ничего об этой ошибке. – rid