Obj-C сохраняет адреса памяти такими же при следующей отладке - PullRequest
0 голосов
/ 11 февраля 2010

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

В данный момент я просто назначаю «идентификатор отладки», который увеличивается с каждым выделением, но подумал, что может быть более чистый способ сделать это. Я уверен, что я делал это раньше с Vis Studio / C ++ ...

1 Ответ

2 голосов
/ 12 февраля 2010

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

Для этого установите обычную точку останова, а затем щелкните ее правой кнопкой мыши и выберите Изменить точку останова .

Найдите точку останова в окне «Точки останова» и дважды щелкните столбец «Условие». Затем вы можете ввести выражение, например:

(BOOL)[[yourObject name] isEqualToString:@"foo"]

Это будет прерываться, только если свойство name для yourObject равно foo.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...