2009-06-10 10 views

cevap

42

po 0x1081ad0

po = Baskı Nesne. Hatta programı çökmesine böylece

po 1

, sadece nesneler üzerinde çalıştığını

po [myArray objectAtIndex:0]

Not gibi yöntemleri çağırabilir.

+7

"po 1" programınızı bozmaz - gdb bundan daha akıllıdır. Sadece bir hata mesajı basacaktır. –

+10

Ayrıca not, nesne olmayan şeyler (int gibi) yazdırmak için, sadece bize p, 'p 1' gibi – RickDT

+1

nereye yazabilirsiniz? – chwi

6

Yapabileceğiniz birkaç şey var.

Bu (kesme noktaları gidip yeni bir tane oluşturun) için çok temelde bir kırılma noktası oluşturmak, bir özel durumu var her zaman tetikleyecek bir kesme noktası ekleyebilir
    1. : - [NSException zam]
    2. Alternatif olarak, aslında o mem yerde nesnenin ne olduğunu görebilirsiniz:

      bilgi sembolü 0x1081ad0 veya

      bilgi hattı * 0x1081ad0

    cocoadev wiki entry for exceptionhandling ve debugging tips for objective C at cocoawithlove adresinde daha fazla bilgi bulabilirsiniz.

  • 9

    Steven doğrudur - gdb komut po (Tahmin edebileceğiniz gibi, değil -description) aslında bir argüman olarak verilen nesne üzerinde -debugDescription çağıran print-object için bir kısayol vardır. Birçok durumda, her ikisi de aynı sonucu görürsünüz, biri geçersiz kılınmadıkça diğerini çağırır. (Ilgili Not bakınız:. Ayrıntılar için this Apple technote üzerinde ek bilgiyi unutmayın onların kod örneğinde Intel kayıtları, vb dahil po $r3 baskılar PowerPC kaydının içerikleri, ancak herhangi bir nesne işaretçi/başvuru kullanabilirsiniz,)

    Ayrıca, print-object'un yalnızca ayrılmamış geçerli nesneler üzerinde çalışacağını unutmayın. İşaretli bir işaretçiye mesaj gönderiyorsanız hiç yardımcı olmaz. Bahsettiğiniz hata göz önüne alındığında, geçerli bir nesne örneği gibi görünecektir, sadece çağırmaya çalıştığınız yöntemi uygulamıyor.

    Nesnenin daha önce imha edildiği uzaktan da mümkündür. Bu durumda This answer yardımcı olmalıdır.


    Düzenleme: ayıklayıcısında nesneleri "incelemek" için başka yolları da vardır

    .Xcode veri biçimlendiricileri hakkında this SO question sordum; bu, özel bir sınıfın hata ayıklayıcısının Özet sütununda nasıl göründüğünü belirleyebileceğiniz bir yoldur. Bu soruyla bağlantılı belgeler nasıl çalıştığını açıklar. Bir nesnenin durumunu görerek çok yardımcı olmak için özet yaklaşımını buldum.

    0

    Örneğiniz geçerli değil. Nesneyi başka bir yerde serbest bıraktın, ama işaretçinizi yok etmedin ... Zombie'nin algılanmasını sağla.

    İlgili konular