LLDB

2012-04-02 26 views
6

ile Xcode 4.3'deki garip hata mesajı Şu anda Xcode 4.3.2 ile bir iOS uygulaması yazıyorum. Kodumun çoğunda LLDB ile hata ayıklama işlemi gayet iyi çalışıyor. Ancak bir noktada, koduma girerken garip bir mesaj alıyorum. Bana değer göstermek yerine Objective-C dolaylı ivar sembolü OBJC_IVAR _ $ _ MyFancyClass.iVarLLDB

bulunamadı: Bir Ivar üzerine geldiğinizde, o

Hata [IRForTarget] diyor. Ancak, Variables View’da, bunu gayet iyi görebilirim. Ben Print Description of ... seçiyorum kadar, çünkü o zaman, Xcode çöker ... GDB kullandığımda, gezinme çalışır ancak değişkenin türü ve değerleri yanlıştır.

Kodumda hata ayıklayıcıların başarısız olmasına neden olan bir sorun olduğunu onaylıyorum. Ancak, kod düzgün çalışır. Bazı örnek kodları vermeyi çok isterdim, ancak sınıf oldukça uzun ve benim mahzurun tam yerini kesin olarak belirleyemiyorum. Yani benzer bir davranışla karşılaştı mı?

GÜNCELLEME: Aslında, bu, kodumdaki her yerde, yalnızca belirli dosyalarda değil gibi görünüyor. Eğer LLDB yukarıdaki mesajı gösterirse, GDB her zaman, iVar'ın kendisi yerine, iVar'a sahip olan Sınıfın bir nesnesini gösterir. Bellek yönetiminde bir sorun varmış gibi görünüyor. Mesela ben

[notificationCenter addObserver:self selector:@selector(foo) name:bar object:objA]; 

seçici gibi bir şey ben

[notificationCenter postNotificationName:bar object:objB]; 
+0

Sizin kodunuz uzun olabilir, ancak bununla yeterince insanın karşılaşmadığı görülüyor. Bu davranışın gerçekleştiği bazı kodların özetlenmiş bir sürümünü gösterebilir misiniz? –

+0

Kodumda kesinlikle her yerde olduğu için, aslında ne yazabileceğimi bilmiyorum ... – Phlibbo

+0

Sadece tahmin ediyorum, bu yüzden bir cevap göndermiyorum, ancak hata ayıklayıcısını kullanmayı denediğinizde ne olur? konsol ve "po" kullanarak nesneyi yazdırmak? Ayrıca, muhtemelen herhangi bir özel gdb yapılandırması yeriniz var mı? Bu, hata ayıklamaya çalıştığınız bir kitaplık mı? Hata ayıklama bilgisini etkin mi oluşturuyorsunuz? Derleme ayarlarınızı iki kez kontrol edin (hata ayıklama sembollerini, optimizasyon seviyesini, hata ayıklama bilgi formatını yaratın). –

cevap

9

Bu hatanın nedeni, yorum gönderildikten sonra sorulan soruda belirtildiği gibi yanlış yapı ayarlarıdır. Bu, "Dağıtım Sonrası İşleme" ayarını Hata Ayıklama Modu için NO'ya (varsayılan değer) getirerek giderilebilir.

2

MyFancyClass.m Hedefinizde eklenir emin olun olmadığında dahi çağrılır dersem

+0

Ne yazık ki, zaten/ – Phlibbo

0

nsnotification gönderildiğini Kişisel selektör bir NSNotification olan bir (ve sadece bir) argümana sahip olmak zorundadır. Bunu yaparken Yani:

[notificationCenter addObserver:self selector:@selector(foo) name:bar object:objA]; 

-(void)foo 
{ 

} 

... bunu yapıyor olması gerekir: [NotificationCenter addObserver: self seçici: @selector (foo :) isim: bar nesnesi: objA];

-(void)foo:(NSNotification *)notification 
{ 

} 

BildirimCenter için selektörde ve foo için argümanda dikkat edin.

+0

Doğru. Ancak, bu sadece benim sahte kodumda bir yazım hatası yaşadım. Unutmayın, asıl sorun tuhaf hata ayıklayıcı uyarılarıdır :) – Phlibbo

+0

(NSNotification) bildirimi (NSNotification *) bildirimi olmalıdır – braden

İlgili konular