Swift ile Uygulama Geliştirme: “Build”, “Run” ve “Debug”

Uygulama geliştirirken karşılaştığımız hataların kaynağını bulup bu hataları nasıl çözebileceğimizi öğrenelim!

Can Balkaya
TurkishKit
5 min readOct 15, 2020

--

Merhaba sevgili TurkishKit okuyucuları! Bu makalemizde Xcode ortamının olmazsa olmazlarından “Build”, “Run” ve “Debug”dan bahsedeceğiz. Bu üç sözcüğün geliştirme yaşantınızda ne kadar önemli olduğunu birazdan anlayacaksınız. 😄

Debug

Her kod yazdığınızda kesinlikle bir hata ile karşılaşırsınız. Bu hataları çözme aşamasına “Debugging” işlemi diyoruz. Bu işlemi kısaca hatanın kaynağını bulup çözümlemek olarak anlatabiliriz.

Bir uygulamayı çalıştırdığınız zaman çalıştırdığınız uygulama bir “debugger” elemanına bağlıdır. Yani arka planda bir debugger var. Bu da kodunuzun satır satır hangi işlemleri yaptığını haberdar olmanızı sağlıyor. Böylece arkaplandaki kodları aynı anda uygulama çalışırken inceleyebiliyorsunuz.

Debugger’dan kodunuzun belli bir bölümünde durmasını isteyebilirsiniz. Bu şekilde projenizde oluşan hataları daha rahat ve hızlı bir şekilde görebilirsiniz.

Bir projede alabileceğiniz iki tane hata vardır: warning (uyarı) ve error (hata).

Warning

Warning elemanları genellikle çözmesi daha kolay uyarılardır denilebilir. Compile etme sırasında karşımıza çıkarlar.

Örneğin eğer yeni bir sabit tanımlarsanız ve bu sabiti projenizin başka hiç bir yerinde kullanmazsanız bir warning karşınıza çıkar.

Bu warning’in sebebi de sabitin hiç bir yerde kullanılmamasıdır. Ama bu, projenin çalışması için bir “engel” değildir.

Error

Anlayacağınız üzere, projenin çalışmasına “engel” olan elemanlar da error’lerdir.

Örneğin, eğer siz bir sabitin değerini sonradan değiştirmeye çalışırsanız projeniz size bir error verecektir ve projeniz çalışamayacaktır.

Bazı hataların düzelmesi için Xcode compiler’ı bize önerilerde bulunur. Örneğin yukarıdaki örnekte sabitin değerinin değiştirilebilir olması için “let” elemanı yerine “var” elemanının kullanılmasını Xcode compiler’ı önerir.

Tabii ki compiler sizin tam olarak ne yapmak istediğinizi bilemediği için compiler’ın size sunduğu her öneriyi kabul etmemelisiniz.

Bug

Bug, anlamı itibariyle “böcek” demektir. (Bu isim, eski yıllarda bir bilgisayarın içerisine bir böceğin girmesi sonucu oluşan hatadan dolayı verilmiştir.)

Bug denilen şey aslında projenizin her tarafında olmaktadır ama bug’lar compile esnasında bizlere görünmezler.

Örnek olarak bir “String” dizisi tanımlayalım ve bu dizinin içerisine üç tane isim yazalım.

Şimdi bu dizinin ilk elemanını silelim.

Bu “removeFirst” fonksiyonunu bir kez daha çalıştıralım.

Bir kez daha çalıştıralım.

Şu an fark edeceğiniz üzere, dizimiz tamamen boş. Eğer bir kez daha “removeFirst” fonksiyonunu çalıştırırsak bir problemle daha doğrusu bir bug ile karşılaşırız.

Eğer projeyi şimdi çalıştırırsanız bir hata ile karşılacaksınızdır. Bu hata runtime’da (çalışma esnasında) belirir.

Tabii ki bu hatanın nedeninin dizimizin içerisinde hiç bir eleman yokken bizim diziden eleman silmeye çalışmamızdan kaynaklanmaktadır. Bu hatayı kolayca ortadan kaldırabiliriz ama daha karmaşık kodlarda ortaya çıkan bu tarz hataların nedenini anlamak bu kadar kolay olmayabilir. Bu yüzden, kodun bir noktada durmasını sağlamamız gerekiyor. Xcode’da kodumuzda durmasını istediğimiz yer için bir “breakpoint” oluşturuyoruz. (Bunu yapmak için satırların sol tarafına tıklamamız yeterlidir.)

Göreceğiniz üzere, burada projemiz hata vermedi ama 17. satırda durdu. Peki projeyi kaldığı yerden nasıl başlatabiliriz?

Aşağıda görmekte olduğunuz iki tane alan vardır: “Debug” -sol taraf- ve “console” -sağ taraf- alanları. Debug alanındaki mavi “breakpoint” benzeri butona tıklarsanız, projenizde kullandığınız bütün “breakpoint”leri pasifleştirirsiniz.

“Breakpoint”leri teker teker de pasif hale getirebilirsiniz. Bunun için tek yapmanız gereken istediğiniz “breakpoint”in üzerine tıklamak.

Bu butonun yanındaki buton ise birden çok “breakpoint”iniz olduğu durumda, ilerideki satırdaki “breakpoint”e geçmenizi sağlıyor.

Not: Bu butona tıkladığınız zaman, kodun çalışmaya devam etmesini fakat bir sonraki “breakpoint”e geldiğinde tekrar durması gerektiğini söylemiş oluyorsunuz.

Onun yanındaki buton ise direkt olarak bir sonraki “breakpoint”e geçmenizi sağlar.

Fark edecek olursanız, Debug alanında aynı Playground’da olduğu gibi anlık olarak kodumuzun durumunu görebiliyoruz. Örneğin, üstteki fotoğrafta “names” isimli dizimizin içerisinde kaç tane değer olduğunu görebiliyoruz. İşte bu bilgiler her “breakpoint” başında yenilenir. Birkaç tane daha “breakpoint” koyacak olursak aşamalı olarak dizimizin nasıl değiştiğini görebiliriz.

İkinci “breakpoint”e geçtiğimiz zaman dizimizde sadece bir eleman kaldığını görebiliriz.

Üçüncü “breakpoint”te artık dizimizin içerisinde hiç eleman yoktur.

“Breakpoint” koyulan satırlarda yazılı olan kodlar “breakpoint”in aktif olması durumunda çalışmazlar. O yüzden, üçüncü “breakpoint”in olduğu satırda hata almadık. Eğer bir sonraki satıra bir “breakpoint” koyacak olursak bir hata ile karşılaşırız.

Bu sayede hatanın nerede olduğunu fark edip o hata kod parçasını silebildik!

Bundan sonra “breakpoint”lerle işiniz bittiğinde ise tabii ki onları silmeliyiz. Bunun için her bir “breakpoint”e çift tıklayıp “Delete Breakpoint” butonuna basabiliriz.

Ya da “breakpoint”leri sürükleyip bırakarak da onları silebiliriz.

Bir makalemizin daha sonuna geldik. Bu makalede “Build”, “Run” ve “Debug” işlemlerinin ne olduğunu ne işe yaradıklarını öğrendik. İyi kodlamalar! 🤘

Swift Öğrenin. Uygulama Geliştirin. Sınırların Ötesine Geçin.

Hem kod yazmaya yeni başlayanların hem de profesyonellerin rahatlıkla takip edebilecekleri 40 saatlik videolu eğitim ile Swift programlama dilini derinlemesine keşfedin. iOS geliştiricisi olma yolundaki ilk ve güçlü adımı atın. Kendi iPhone uygulamalarınızı geliştirmeye başlayın.

Birebir Mentorluk Desteği

İhtiyaç duyduğunuz her an desteğe hazır TurkishKit mentorları ile eğitim boyunca karşılaşacağınız problemleri birebir online görüşmelerde çözün.

Tanıtım Videosu

Daha Fazla Bilgi Edinin & Eğitime Katılın

Bizi daha yakından takip etmek istiyorsanız, sosyal medya hesaplarımıza aşağıdan ulaşabilirsiniz!

Twitter | Instagram | Facebook

--

--