Стивен прав: команда gdb po
- это сокращение для print-object
, которое на самом деле вызывает -debugDescription
(а не -description
, как вы могли бы ожидать) для объекта, представленного в качестве аргумента. Во многих случаях вы увидите один и тот же результат от обоих методов, так как один вызывает другой, если не переопределен. (Подробнее см. Примечание: выноска на этой технической заметке Apple . Обратите внимание, что в их примере кода po $r3
печатает содержимое регистра PowerPC, но вы можете использовать любой объект указатель / ссылка, включая регистры Intel и т. д.)
Также помните, что print-object
будет работать только с действительными объектами, которые не были освобождены. Это совсем не поможет, если вы отправляете сообщение на указатель. Однако, учитывая приведенную вами ошибку, может показаться, что это допустимый экземпляр объекта, но он просто не реализует метод, который вы пытаетесь вызвать.
Также возможно, что объект уже был уничтожен. Этот ответ должен помочь в этом случае.
Edit:
Существуют и другие способы «проверки» объектов в отладчике. Я задал этот SO вопрос о форматировщиках данных XCode, который является одним из способов определения того, как пользовательский класс отображается в столбце Сводка отладчика. Документация, связанная с этим вопросом, объясняет, как это работает. Я нашел общий подход, который очень помогает при просмотре состояния объекта.