Makale Özeti

Code yazmak mı daha çok zamanınızı alıyor, debug yapmak mı? Debug süreçlerimizi hızlandırmak için yapabileceklerimizi gözden geçirelim.

Makale

    Debug Tekniklerimizi Geliştirelim

        Kaç senedir program yazıyor olsak ta, kodlama konusunda çok profesyonel de olsak, neredeyse hiç birimizin yazdığı kod tek derlemede çalışmıyor ya da bir çok exceptiona, bir çok algoritmik hataya düşebiliyor. Aslında yazdığımız kodun ilk seferde tamamiyle doğru çalışması, özellikle karışık ve uzun programlarda, pek te beklenebilecek birşey değil. Bunun için ne kadar iyi kod yazarsak yazalim, debug etmeyi de iyi bi şekilde öğrenmeliyiz. Bu makalede, Visual Studionun bize sunduğu debug araçlarından ve bunları nasıl etkin kullanabileceğimizden bahsedeceğim.

        Debug sırasında kullanabilceğimiz temel araçlarımız

  • Break Points : Yazdığımız uygulamayı istediğimiz adımında durdurabileceğimiz bir numaralı aracımız.
  • Watch Window : Değişkenlerimizin içeriklerini, değerlerini görüntüleyebileceğimiz ekran.
  • Step by Step execution yapabilmemizi sağlayan Step Into, Step Over, Step Out buttonlarımız.
  • Command Window : Hem commandlarımızı çalıştırabileceğimiz hem de immediate modda debug için kullanabileceğimiz ekranımız.

        Break Pointlerden incelememize başlayalım. Break Points gerçekte, "Debugging Engine" olarak adlandırdığımız yapıya, basitçe, "burda durmak istiyorum" mesajını gönderen instructiondır. Bu sayede program, Break Pointin olduğu satırda durduğunda, oluşan şartları inceleyerek adım adım çalışmamıza ya da programı kaldığı yerden devam ettirmemize olanak sağlar. İki şekilde Break Point koyabiliriz. Birincisi cursor durmak istedigimiz satırda iken F9a basmak ve ya satırın sol tarafındaki gri alana tıklamak, ikincisi ise ctrl+B tuş kombinasyonu ile Break Point oluşturmak.

        Genelde hepimizin kullandığı, F9 ile Break Point koyma yöntemidir ki yukarıdaki resimde de bu gorunmekte, fakat, farkında olmasak ta, bu bize debug sırasında çok zaman kaybına sebeb olur. Çünkü bu şekilde koyduğumuz Break Point, o satırın her executionında programı durduracaktır. Oysa, ctrl+B ile Break Point koyarsak, aşağıdaki gibi bir pencere çıkacaktır.

        ctrl+B ye bastığımızda ilk olarak arkadaki ekran açılmakta, ordan da Break Pointimizin ne zaman durmasını istediğimizi seçebileceğimiz iki opsiyon bulunmakta. Yukarıda "Condition" a tıklandığında açılan pencere görünmekte. Burada, o Braek Point satırında yazabileceğimiz conditionların hepsini yazabilir ve Break Pointi bu condition dogruluğuna ya da değişikliğine göre yönetebiliriz. İkinci opsiyon olarak ta, "Hit Count" olarak adlandırılan, ve programın Break Pointten her geçişinde 1 artan counterı kontrol edebiliriz. Aşağıda Hit Count penceresini ve opsiyonlarını görmekteyiz.

        Peki, Break Point ile programımızı bir yerde durdurduk, yeni oluşan durumları, variable değerlerini nasıl görebiliriz? Bunun için Watch Window ya da Quick Watch kullanmak en doğru çözümdür. Watch Windowda herhangi bir variable değerini, object içeriklerini, objectlerin property değerlerini görebilir hatta, o değerleri değiştirebiliriz. Watch Windowa atıcağımız nesneyi, highlite ile işaretleyip sürükle bırak yaparak ekleyebileceğimiz gibi, Name kısmına adını yazarak ta ekleyebiliriz.

        Yukarıda da gördüğümüz gibi, sadece variable adını yazarak (sum), object ve property yazarak (textBox1.Text) ya da sadece objectin adını yazarak istediğimiz bilgilere ulaşabilir, bunları value kolonuna tıklayarak degiştirebiliriz. Gerektiği taktirde, debug/windows/watch menusunden toplamda 4 adet olan diğer watch windowları da görüntüleyebiliriz.

        Programımızı Break Point ile durdurduk, Watch Window ile inceledik ama adım adım programın çalışmasını görmek istiyoruz. Bu aşamada da Visual Studio .NET bize üç adet seçenek sunuyor:

Step Into ( F11 ) butonu kodda gördüğümüz her satırı teker teker çalıştırır. Yani, örneğin bir fonksiyon çağrılıyorsa, o fonksiyona gider, adım adım o fonksiyonun içinde işlemleri yapar, ve returne geldiğinde, fonksiyonun çağrıldığı noktaya geri dönerek adım adım çalışmasına devam eder, yani kısaca, executionın tamamını adım adım yaptırır.

Step Over ( F10 ) butonu yine adım adım çalıştırmaya yöneliktir, fakat bu sefer, fonksiyon çağrımları gibi, alt rutinleri tek bir adımda çalıştırır. Yani, adım adım programımızı çalıştırırken, bir fonkiyon çağrımına geldiğimizde, step over ile, o funksiyonu hemen çalıştırıp, sonucunu alıp, yeni adımını bulunduğumuz satırın hemen alt satırına koyar. Doğruluğundan emin olduğumuz fonksiyonları bu şekilde geçmek zaman kazandıracaktır.

Step Out ( Shift + F11 ) butonu ise, step into ile geldiğimiz bir fonksiyonun herhangi bir yerinde basıldığında hemen fonkiyonun kalan kısmını çalıştırır, returne gelir ve fonksiyonun çağrıldığı satırın bir sonraki satırına geçer. Bunu da, testini bitirdiğimiz bir alt fonksiyondan hızlı bir şekilde çıkmak için kullanabiliriz.

            Son olarak ta Command Windowu inceleyelim. Aslında command window bir debugging tool gibi kullanılabilmesinin yanı sıra, Visual Studio menulerinden yaptığımız bir çok işlemide command text olarak işleyebilmektedir. Hatta debuggingte kullandığımız bir çok şeyi watch window aracılığıyla da yapabilmekteyiz. Yine de, commond windowda, başka yerlerde yapamayacağımız debug sorguları, karşılaştırmaları yapabilmekteyiz.

         Command Window iki modda çalışır. Birincisi, command mode, Visual Studio commandlerini çalıştırabilmemizi sağlar, örneğin >Edit.FindinFiles yazdığımızda, "Find in Files" penceresini açar. Debug için kullanımı ise, genelde immediate moddadır. Örneğin sum değişkeni ile textBox1.Text propertisi birbirine eşitmi gibi bir debug sorgusunu ancak Command Windowda immediate modda gerçekleştirilebilir. >immed ve >cmd yazarak mod değiştirebilir, ve bu modlarda, intellisense özelliğinden yardım alabilirsiniz. Aşağıda Command Window-immediate modda yapılan bir kaç işlem görünmekte.

        Visual Studio IDEsi içine gömülü bu debugging araçları işlemlerimizi hızlandırmada büyük katkılar sağlayacaktır.

Herkese iyi çalışmalar.

Kıvanç ÖZÜÖLMEZ

ozuolmez@msn.com