2009-11-25 2 views
0

Пример: Я запускаю свое приложение в симуляторе. Затем я хочу выяснить, что именно происходит, когда я касаюсь кнопки. Обычно мне сначала нужно было выяснить, где входная точка всего этого безумия заключается в том, чтобы поставить точку останова. Но теперь давайте предположим, что мое приложение имеет 700 классов, и это невероятно сложно, с более чем 12 000 методов. Шансы большие, я вообще не знаю, где поставить точку останова. Просто в теории.Как отключить отладчик где угодно?

Как сделать остановку отладчика в любом месте в следующий раз, когда что-то произойдет? Я знаю, что могу включить/выключить его, пока работает мое приложение, и это нормально, но есть ли способ заставить его вести себя так, как если бы каждая строка в приложении имела точку останова на нем? Надеюсь, ты знаешь, что я имею в виду. Мой английский ужасен. Спасибо.

ответ

2

Что вам нужно, это символические контрольные точки. Для краткого объяснения смотрите here.

+0

Спасибо за эту ссылку, но я действительно хочу остановиться * в любом месте *, а не только на исключениях. Как только я включу отладку, я хочу, чтобы следующий метод или функция, которая вызывается, является «точкой останова» автоматически. Трудно объяснить ... –

+2

Символические точки останова не просто останавливаются на исключениях, а просто исключения используются в примерах. Вы можете использовать любой метод любого класса в качестве символической точки останова. – TechZen

1

... есть способ, чтобы заставить его вести себя , как если бы каждая строку в приложении была контрольной точки на ней?

Похоже, вы спрашиваете о команде «step over». Вы устанавливаете единую точку останова, чтобы приложение останавливалось на определенной строке. Затем вы можете использовать команду «step over» для перемещения по каждой последующей строке кода. Это позволяет вам подробно просмотреть каждую строку.

Вы не можете запускать все приложение за строкой, потому что отладчик должен логически следовать каждой команде, включая команды из скомпилированных библиотек. Если вы попытаетесь выполнить каждую команду с момента запуска, вам потребуется несколько часов прохода через сборку, чтобы перейти к исходному виду.

2

Я не уверен, если ваша просьба методика действительно полезной на практике, но с добавлением символических точек останова на -[UIApplication sendEvent:] и/или -[UIApplication sendAction:to:from:forEvent:], по крайней мере перерыв, когда событие инициируется/действие выполняется вместо того, чтобы пытаться пройти через каждую строку ,

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

Смежные вопросы