Отслеживание переменной или изменение памяти в Xcode? - PullRequest
17 голосов
/ 26 января 2011

Есть ли способ отслеживать изменения переменных или памяти в XCode? Я ищу такие функции, как точка останова данных Visual Studio.

Я хочу знать, где изменяется рамка просмотра моего объекта. Я хочу установить точку останова на переменную-член и запустить ее. Тогда я мог бы определить, где это изменилось.

Ответы [ 4 ]

20 голосов
/ 27 января 2011

Xcode использует gdb (или lldb, но это уже другая история) для реализации своих функций отладки.gdb имеет возможность устанавливать аппаратные точки наблюдения и, следовательно, делает Xcode.

Эта является полезной страницей для общей отладки ошибок памяти.Окно консоли отладки Xcode - это просто оболочка gdb, вы можете вводить команды по своему усмотрению.Всегда полезный Куинн Тейлор объясняет, как это сделать в этом посте.

Если вы предпочитаете избегать прямого взаимодействия с gdb, вы можете щелкнуть правой кнопкой мыши переменную в XcodeОтладка окна и выберите «Смотреть переменную».Xcode будет предупреждать вас всякий раз, когда значение вашей переменной было изменено.

10 голосов
/ 03 апреля 2013

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


Вам необходимо получить адрес переменной, которую вы хотите отслеживать (введите p &my_var в приглашении gdb).

Будет напечатано что-то вроде 0x12345678.

  • С GDB: тип watch *(int *)0x12345678.

  • С lldb: watch set expression (int *)0x12345678 (или w s e (int *)0x12345678)

Предполагается, что ваша переменная int. По этому адресу будет создана аппаратная точка наблюдения.


Надеюсь, это поможет.

1 голос
/ 26 января 2011

Да.

В меню «Выполнить» есть «Отладчик», который предоставляет визуальный интерфейс для gdb.

Кроме того, рядом с кнопкой Build and Run есть кнопка точки останова. Вы можете щелкнуть по нему и управлять своими точками останова в Run> Manage Breakpoints.

0 голосов
/ 20 февраля 2015

Я знаю, что это сообщение старое, но если вам все еще интересно, я разместил подробный ответ здесь: В XCode 6 как вы можете установить точку наблюдения без остановки выполнения?

...