Steven jest poprawna - komenda gdb po
jest skrótem dla print-object
, które faktycznie wywołuje -debugDescription
(nie -description
, jak można się spodziewać) na obiekcie przewidziany jako argument. W wielu przypadkach zobaczysz ten sam wynik z obu metod, ponieważ jeden wywołuje drugi, chyba że zostanie zastąpiony. (Patrz powiązany . UWAGA: objaśnienie na this Apple technote szczegółowe informacje Należy pamiętać, że w ich próbki kodu po $r3
drukuje zawartość rejestru PowerPC, ale można użyć dowolnego obiektu wskaźnik/odniesienia, w tym rejestrów Intel, etc.)
Pamiętaj też, że print-object
działa tylko na prawidłowych obiektach, które nie zostały zwolnione. Nie pomoże to wcale, jeśli wysyłasz wiadomość do zakorkowanego wskaźnika. Biorąc pod uwagę błąd, który cytujesz, wydaje się, że jest to poprawna instancja obiektu, ale nie implementuje metody, którą chcesz wywołać.
Możliwe jest również, że obiekt został już zniszczony. This answer powinien pomóc w tym przypadku.
Edit:
Istnieją inne sposoby, aby "zbadać" obiektów w debugger.Zapytałem o kodery danych Xcode, this SO question, w ten sposób można określić, w jaki sposób klasa niestandardowa pojawia się w kolumnie Podsumowanie debuggera. Dokumentacja powiązana z tym pytaniem wyjaśnia, jak to działa. Znalazłem podejście podsumowujące, które bardzo pomaga przy obserwowaniu stanu obiektu.
"Po 1" nie zawiesza twojego programu - gdb jest mądrzejszy. Po prostu wydrukuje komunikat o błędzie. –
Pamiętaj również, aby wydrukować rzeczy nieobiektowe (np. Int), tylko nas, p, np. "P 1" – RickDT
gdzie możesz to napisać? – chwi