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.textkullanmak zorundasınızpo [label text]
@property.
pkısayol olarak da kullanabilirsiniz expr. Örnek:(lldb) p url = @"http://google.com"
ekısayol olarak da kullanabilirsiniz expr. BTW, pyazdırma için bir takma expr --addır (yalnızca ham girdiyi değerlendirin, bayrak yok) expr -o -- [object]veya pogenellikle 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