2011-01-26 15 views
15

Xcode'taki değişken değişiklikleri veya bellek değişikliklerini takip etmenin bir yolu var mı? Visual Studio'nun veri kesme noktası gibi işlevler arıyorum.Xcode'da izleme değişkeni veya hafıza değişikliği var mı?

Nesnemin görünüm çerçevesinin nerede değiştirildiğini bilmek istiyorum. Bir üye değişkeni için bir kesme noktası belirlemek ve çalıştırmak istiyorum. Sonra nerede değiştiğini belirleyebilirim.

cevap

19

Xcode, hata ayıklama işlevselliğini uygulamak için gdb (veya lldb, ancak başka bir hikaye) kullanır. gdb, donanım izleme noktaları belirleme yeteneğine sahiptir ve bu nedenle Xcode da vardır.

This, bellek hatalarının genel hata ayıklaması için yararlı bir sayfadır. Xcode'un hata ayıklama konsol penceresi gerçekten sadece bir gdb kabuğudur, istediğiniz gibi komutları yazabilirsiniz. Hiç yardımcı olmayan Quinn Taylor, this ile ilgili mesajda bunu nasıl yapacağını açıklıyor.

Doğrudan gdb ile etkileşimde bulunmaktan kaçınmayı tercih ederseniz, Xcode'un hata ayıklama penceresinde bir değişkene sağ tıklayıp "Değişkenleri İzle" yi seçebilirsiniz. Xcode, değişkeninizin değeri değiştiğinde sizi uyarır.

+0

Detay cevabı için teşekkürler! Deneyeceğim! – SeniorLee

+0

Saat penceresindeki değişkenlere sağ tıklamayı asla düşünmemiştim! Şimdi gerçekten isabet umuyoruz;) ropey sadece değişken değerlerini gösteren yeterli görünüyor - bana yerel vars kapsam dışında olduğunu gerçekten yararlı değil –

+0

@LaceySnr: cevabımı kontrol edin. XCode saatiyle aynı problemim var. Bu yüzden gdb izleme noktasını kullanıyorum. –

1

Evet.

Çalıştır menüsü altında gdb'ye görsel bir önyüz sağlayan "Hata Ayıklayıcı" var.

Ayrıca, Oluştur ve Çalıştır düğmesinin yanında bir kesme noktası düğmesi vardır. Bunu tıklayıp Çalıştır> Kesin Noktaları Yönet altında sınır değerlerinizi yönetebilirsiniz.

+1

Onun aradığını bu olduğundan emin değilim. Standart kesme noktaları hakkında konuşuyorsunuz, ancak bellekte bir yerde saklanan veriler değiştiğinde kırılıyor. Bir ayrılıktan daha çok bir gözlem noktası gibi. –

+0

Anladım. Evet, böyle bir "tetikleyici" olup olmadığını bilmiyorum. Ancak, Hata Ayıklayıcı aracılığıyla ve standart kesme noktalarının kullanımıyla veri değişimini görebilirsiniz. Muhtemelen Visual Studio kadar düzgün değil. – aqua

9

hardware watchpoints'u kullanabilirsiniz.


Sen (gdb isteminde türü p &my_var) izlemek istediğiniz değişkenin adresini almak zorunda.

0x12345678 gibi bir şey yazdıracaktır.

  • gdb ile: watch *(int *)0x12345678 yazın.

  • lldb ile

    : watch set expression (int *)0x12345678 (veya w s e (int *)0x12345678)

Bu değişken bir int olduğunu varsayar. Bu adreste bir donanım izleme noktası oluşturacaktır. Bu yardımcı olur


Umut.