W Xcode GDB umożliwia zmianę zmiennych lokalnych podczas debugowania (zobacz, jak zmienić wartość NSString podczas debugowania w XCode? ). Czy LLDB oferuje podobną funkcjonalność? Jeśli tak, jak możemy z tego skorzystać?
173
W Xcode GDB umożliwia zmianę zmiennych lokalnych podczas debugowania (zobacz, jak zmienić wartość NSString podczas debugowania w XCode? ). Czy LLDB oferuje podobną funkcjonalność? Jeśli tak, jak możemy z tego skorzystać?
Odpowiedzi:
źródło
'expr myLabel.text = @"hello!"
ale mamerror: property 'text' not found on object of type 'UILabel *'
… Jakieś myśli?expr (void)[label setText:@"Foo"]
powinien to zrobić. Dot-Syntax zwykle nie działa w debugerze. lldb prawdopodobnie interpretuje to tak, jakbyś chciał uzyskać dostęp do elementu członkowskiego struktury c, ale nie jestem pewien, czy to jest powód, dla którego to nie zadziała. Dot-Syntax nie działa w przypadkupo
obu. zamiast tegopo label.text
musisz użyćpo [label text]
@property
.p
jako skrótu doexpr
. Przykład:(lldb) p url = @"http://google.com"
e
jako skrótu doexpr
. BTW,p
jest aliasem dla print, który jest aliasem dlaexpr --
(po prostu evalue raw input, no flag)expr -o -- [object]
lubpo
generalnie daje bardziej użyteczne wyjście dla obiektów.Poniższe rzeczy działają dla mnie. Używam Xcode 8.
Jeśli chcesz ustawić jakąś zmienną (na przykład „dict”) na zero, a następnie przetestować przepływ kodu, możesz spróbować wykonać następujące czynności.
Będzie to wyglądało jak w konsoli.
źródło
Jeśli używasz Xcode 10 lub 11, ustaw punkt przerwania poprawnie po zainicjowaniu do wymaganej zmiennej, możesz łatwo zmienić swoją zmienną za pomocą
po myString = "Hello World"
.źródło