Вопрос по ios, xcode, iphone, uikit – Как я устанавливаю символическую точку останова на _WebThreadLockFromAnyThread в XCode?

8

Я использую Xcode 4.3.2 с lldb в качестве моего отладчика.

Я унаследовал проект, который содержит код, который вызывает UIKit из вторичных потоков, как показано в этих сообщениях журнала:

2012-05-02 21:48:14.603 Appname Dev[77594:16e0f] void _WebThreadLockFromAnyThread(bool), 0x8d5f810: Obtaining the web lock from a thread other than the main thread or the web thread. UIKit should not be called from a secondary thread.

Я очистил большую часть кода, который делал вызовы UIKit из вторичных потоков, но я все еще иногда вижу это сообщение в журналах. Приложение не падает, поэтому трудно точно определить, в чем проблема.

Я хотел бы установить точку останова на_WebThreadLockFromAnyThread, но когда я пытаюсь установить символическую точку останова, используя:

<code>b _WebThreadLockFromAnyThread
</code>

отладчик говорит мне:

breakpoint set --name '_WebThreadLockFromAnyThread' Breakpoint created: 12: name = '_WebThreadLockFromAnyThread', locations = 0 (pending) WARNING: Unable to resolve breakpoint to any actual locations.

Я также пытался создать символическую точку останова с использованием пользовательского интерфейса в навигаторе точек останова, но я не уверен, что вводить для модуля. Когда я оставляю модуль пустым, точка останова создается, но она все еще не прерывается, когда в консоли отладки появляется сообщение журнала.

Может кто-нибудь сказать мне, как я могу добавить о точке останова на_WebThreadLockFromAnyThread, а также как я могу определить, что является определяющим модулем для этого символа?

Ваш Ответ

3   ответа
3

ля меня как в lldb, так и в gdb. Теперь это Xcode 4.6, поэтому, если вы застряли на более старой версии, я полагаю, возможно, что проблема в этой версии отсутствует в 4.6.

Круто, большое спасибо! В итоге я использовал следующую похожую команду, которая также устанавливает условие так, что оно прерывается, только если функция вызывается вне основного потока:break set -n WebThreadLockFromAnyThread -c '!(BOOL)[NSThread isMainThread]' Greg
0

нет нужных вам символов, потому что xcode по умолчанию выдает & quot; release & quot; build, который, если я прав, удаляет символы, делая файл exec намного меньше. Я не уверен, как в данный момент, но вам нужно найти вариант, чтобы переключиться на «отладка» построить, который будет гарантировать, что все эти прекрасные символы ждут вашего анализа.

Я работаю со сборкой, в которой есть "символы отладки во время копирования"; установите на "Нет". Greg
0

ссов, чтобы найти модуль.

Я попытался использовать nm на исполняемом файле, который Xcode произвел при создании приложения, но в нем не было символа. Greg

Похожие вопросы