Xcode'da GDB, hata ayıklama sırasında yerel değişkenleri değiştirmenize izin verir ( XCode'da hata ayıklama sırasında NSString değerinin nasıl değiştirileceğine bakın ? ). LLDB benzer bir işlev sunuyor mu? Öyleyse, nasıl kullanabiliriz?
Xcode'da GDB, hata ayıklama sırasında yerel değişkenleri değiştirmenize izin verir ( XCode'da hata ayıklama sırasında NSString değerinin nasıl değiştirileceğine bakın ? ). LLDB benzer bir işlev sunuyor mu? Öyleyse, nasıl kullanabiliriz?
Yanıtlar:
expr myString = @"Foo"
(lldb) help expr
Geçerli kapsamdaki değişkenleri kullanarak geçerli program bağlamında bir C / ObjC / C ++ ifadesini değerlendirin. Bu komut 'raw' girdisini alır (herhangi bir şey teklif etmeye gerek yoktur).Sözdizimi: ifade -
Komut Seçenekleri Kullanımı: ifade [-f] [-G] [-d] [-u] - ifade [-o] [-d] [-u] - ifade
-G <gdb-format> ( --gdb-format <gdb-format> ) Specify a format using a GDB format specifier string. -d <boolean> ( --dynamic-value <boolean> ) Upcast the value resulting from the expression to its dynamic type if available. -f <format> ( --format <format> ) Specify a format to be used for display. -o ( --object-description ) Print the object description of the value resulting from the expression. -u <boolean> ( --unwind-on-error <boolean> ) Clean up program state if the expression causes a crash, breakpoint hit or signal.
Örnekler:
expr my_struct-> a = my_array [3]
expr -f bin - (dizin * 8) + 5
ifade ifadesi c [] = "foo"; c [0]ÖNEMLİ NOT: Bu komut 'ham' girdi aldığından, herhangi bir komut seçeneği kullanırsanız, komut seçeneklerinin sonu ile ham girişin başlangıcı arasında '-' kullanmanız gerekir.
'ifade', 'ifade' için kullanılan bir kısaltmadır
'expr myLabel.text = @"hello!"
ama anladım error: property 'text' not found on object of type 'UILabel *'
... Herhangi bir düşünce?
expr (void)[label setText:@"Foo"]
yapmalı. Dot-Syntax genellikle hata ayıklayıcıda çalışmaz. lldb muhtemelen bunu bir c yapısının bir üyesine erişmek istediğiniz gibi yorumlar, ancak bunun işe yaramamasının nedeni olup olmadığından emin değilim. Dot-Syntax da çalışmaz po
. yerine po label.text
kullanmak zorundasınızpo [label text]
@property
.
p
kısayol olarak da kullanabilirsiniz expr
. Örnek:(lldb) p url = @"http://google.com"
e
kısayol olarak da kullanabilirsiniz expr
. BTW, p
yazdırma için bir takma expr --
addır (yalnızca ham girdiyi değerlendirin, bayrak yok) expr -o -- [object]
veya po
genellikle nesneler için daha yararlı çıktılar verir.
Aşağıdaki şeyler benim için çalışıyor. Xcode 8 kullanıyorum.
Nil'e bazı değişkenler (örneğin "dikte") ayarlamak ve daha sonra kod akışını test etmek istiyorsanız, aşağıdakileri deneyebilirsiniz.
Konsoldaki gibi görünecek.
(lldb) expression dict = nil
(NSDictionary *) $5 = nil