Как в Xcode отловить все вызовы конкретной функции при отладке?

«Как в Xcode отловить все вызовы конкретной функции при отладке?» — вопрос из категории Тестирование, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для этого используется Symbolic Breakpoint (символьная точка останова).

Шаги настройки:

  1. Откройте Breakpoint Navigator (⌘ + 8).
  2. Нажмите "+" в нижней части панели и выберите "Symbolic Breakpoint".
  3. В поле Symbol укажите точное имя функции.

Формат имени функции (Symbol):

  • Swift: MyApp.ViewController.viewDidLoad() (для метода экземпляра) или MyApp.Utils.helperFunction(_:).
  • Objective-C: -[MyClass myMethod:] (экземплярный метод) или +[MyClass classMethod] (классовый метод).
  • C-функция: myCFunction.

Пример для Swift:

MyModule.MyViewController.tableView(_:didSelectRowAt:)

Дополнительные действия (Action): Вы можете добавить автоматические действия при срабатывании точки останова:

  • Log Message: Вывести сообщение в консоль (например, "Called %B").
  • Debugger Command: Выполнить команду LLDB, например:
    po $arg1 // Распечатать первый аргумент (self в Objective-C)
    bt // Показать backtrace (стек вызовов)
  • Звук или запуск скрипта.

Это позволяет анализировать каждый вызов функции без модификации исходного кода.