iphone EXC_BAD_ACCESS вызван emergency_mutex - PullRequest
0 голосов
/ 05 февраля 2010

Приложение iphone иногда вылетает на симуляторе и устройстве с таким сообщением в отладчике:

Program received signal:  “EXC_BAD_ACCESS”.
Data Formatters unavailable (Error calling dlopen for: "/Developer/Applications/Xcode.app/Contents/PlugIns/GDBMIDebugging.xcplugin/Contents/Resources/PBGDBIntrospectionSupport.A.dylib": "dlopen(/Developer/Applications/Xcode.app/Contents/PlugIns/GDBMIDebugging.xcplugin/Contents/Resources/PBGDBIntrospectionSupport.A.dylib, 10): no suitable image found.  Did find:
    /Developer/Applications/Xcode.app/Contents/PlugIns/GDBMIDebugging.xcplugin/Contents/Resources/PBGDBIntrospectionSupport.A.dylib: open() failed with errno=24")

Дорожка стека просто говорит:

0 (anonymous namespace)::emergency_mutex
1 ??
2 __NSFireTimer
3 CFRunLoopRunSPecific
4 CFRunLoopRunInMode
5 GSEventRunModal
6 GSEventRun
7 UIApplicationMain
8 main

Понятия не имею, что это значит или как отладить его.

Ответы [ 2 ]

1 голос
/ 05 февраля 2010

Основной причиной EXEC_BAD_ACCESS является попытка доступа к перевыпущенным объектам.

Чтобы узнать, как решить эту проблему, прочитайте этот документ: DebuggingAutoReleasePool

Даже если вы не думаете, что «выпускаете автоматически выпущенные объекты», это относится к вам.

Этот метод работает очень хорошо. Я использую это все время с большим успехом !!

Таким образом, это объясняет, как использовать класс отладки NSZombie Какао и инструмент командной строки «malloc_history», чтобы точно определить, к какому освобожденному объекту обращались в вашем коде.

Sidenote:

Запуск инструментов и проверка на утечки не помогут устранить неполадки EXEC_BAD_ACCESS. Утечки памяти не имеют ничего общего с EXEC_BAD_ACCESS. Определение утечки - это объект, к которому у вас больше нет доступа, и поэтому вы не можете вызвать его (и не можете перевыпустить его).

0 голосов
/ 05 февраля 2010

EXC_BAD_ACCESS много подходит для управления памятью, вы запускали свою программу с помощью инструментов для проверки или утечки, или гарантировали, что вы не пытаетесь получить доступ к объектам, которые все уже были освобождены?

Редактировать: Хороший пост об отладке такого рода ошибок http://www.codza.com/how-to-debug-exc_bad_access-on-iphone

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...