Наблюдение переменных в XCode

«неизменный» означает, что вы не можете изменить значение. Если у вас есть экземпляр класса String, любой вызываемый вами метод, который, по-видимому, изменяет значение, фактически создаст еще одну строку.

String foo = "Hello";
foo.substring(3);
<-- foo here still has the same value "Hello"

Чтобы сохранить изменения, вы должны сделать что-то вроде этого foo = foo.sustring (3);

Неизменяемое и изменяемое может быть забавным при работе с коллекциями. Подумайте, что произойдет, если вы используете изменяемый объект в качестве ключа для карты, а затем измените значение (совет: подумайте о equals и hashCode).

18
задан bneely 11 February 2014 в 19:38
поделиться

2 ответа

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

Если вы не возражаете более подробно, вы можете использовать какой-нибудь низкоуровневый gdb команды для установки точки наблюдения для адреса самой памяти. Например, в руководстве, на которое вы ссылаетесь, они показывают, как отслеживать переменную path , которая является указателем со значением 0xbfffeb70 . Чтобы вручную установить точку наблюдения для этого адреса, щелкните в консоли отладчика (где выводится отладочная информация) после приглашения «(gdb)» и введите что-то вроде этого:

watch *((int*)0xbfffeb70)

Загадочный синтаксис необходим, потому что gdb ожидает входные данные как C выражения. Для более подробной информации, перейдите по этой ссылке и перейдите в раздел под названием «Использование аппаратных точек наблюдения» . (Я тестирую на компьютере Intel, не знаю, как PowerPC с этим справляется.) Когда вы устанавливаете точки наблюдения таким образом, Xcode предупреждает вас раскрывающимся списком при достижении точки наблюдения и сообщает вам, как было изменено значение, и gdb выведет ту же информацию в консоль.

19
ответ дан 30 November 2019 в 07:44
поделиться

Я только что столкнулся с этой проблемой. Вот решение: щелкните правой кнопкой мыши имя переменной и выберите «Просмотреть переменную в окне» в появившемся меню. Он должен быть внизу.

8
ответ дан 30 November 2019 в 07:44
поделиться