##### author: Çağrı ÇOLAK ##### date: 2019 ##### title: Basic Debugging Notes from packtpub online courses. --- # Sarı renkli xcode issueları varsa build error vermesi için build settings alanında treat warnings as error alanını aktif yaparsak issuelar varken build olmaz. # Print statements: print icerisine; **#file**, **#function**, **#line** yazarak detaylı log alabiliriz. Bunu error exception durumları için kod yazarken kullanabiliriz. Uygulama crash olduğunda nedenini bulmak için debug konsolda reason: kısmı okunmalı. # Break points ## Swift Error breakpoint: Try catch yazılmayan blokta kod hata verirse, hata gerçekleşmeden hemen önce xcode crash başlangıcını bize gösterir. ## Symbolic breakpoint: Metodun adını bildiğimiz ancak nerelerde çağırıldığını bilmediğimiz zamanlarda kullanabileceğimiz kullanışlı bir yardımcıdır. Metodun adını verdiğimizde hangi sınıfta nerelerde hangi satırda hangi dosyada çağırıldığını bize navigator kısmında gösterir. ## Constraint error fixleme: Konsol ekranımızda constraint error aldığımızda ve bunun hangi ui elemanına ait olduğunu bilmediğimizde expression kullanarak hemen saptayabiliriz. Yazacağımız kod şu formatta olmalıdır: `ex [(UIView *) 0xMemoryAdres setBackgroundColor: [UIColor yellowColor]]` constraint error veren ui elemanının memory adresini vererek uiview tipine çevirir ve arkaplan rengini değiştirmiş oluruz, böylelikle göze görünür olmuş olur constraintsinde problem olan. ## Color blended layers: Ui elemanlarının arkaplan rengi olmalıdır, şeffaf olmamalıdır. Ui ekleyeceğimiz görseller arkaplanı şeffaf olmamalıdır. ## Log function name and hit count: Bir metodun kaç kez çağırıldığını konsolda çıktı olarak görmek istiyorsak, break point ekleyip metoda log message kısmına aşağıdaki formatı yaz: `%B was called %H times: @variable@` **%B** = metodun adını yazar **%H** = kaç kez çağırıldığını yazar **@variable@** = işaretler arasına varsa değişken adı yazılır log mesajında gösterilmiş olunur. ## Add multiple actions to breakpoint: Eklemiş olduğumuz breakpoint belli bir kondisyonda çalışmasını istersek: Condition kısmına aşağıdaki formatta birden fazla kondisyon eklenebilir `x == 5 && y / 2 == 0` # Instruments: Temel olarak uygulamalarda kullanılabilecek instruments profil seçenekleri: * Memory leaks * Memory allocation * Time profiler > Instrumentsi açtığımızda profillerin birbirleriyle benzer renkleri aynı kategoride olduklarını gösterir, renkler rastgele verilmemiştir.