Arduino IDE 2.0 Hata Ayıklama(Debugging)

Arduino IDE 2.0 Hata Ayıklama(Debugging) hata ayıklama,arduino ide 2.0 debugging,arduino ide 2.0 debugger,hata ayıklayıcı

Modern gömülü sistem geliştirme süreçlerinde, yazılımdaki hata ayıklama ve program akışını anlık izlemek projenin başarısı için kritik öneme sahiptir. Yenilenen Arduino IDE 2.0, geliştiricilere profesyonel düzeyde asenkron hata ayıklama yetenekleri sunan donanımsal bir Hata Ayıklayıcı (Debugger) aracı ile birlikte gelir. Bu kapsamlı rehberimizde; Arduino Zero, J-Link ve Atmel-ICE donanımsal hata ayıklama modüllerinin nasıl yapılandırılacağını, kesme noktalarının (breakpoints) nasıl kullanılacağını ve adım adım kod analizi yapmayı tüm teknik detaylarıyla öğreneceğiz.

Arduino IDE 2.0 Geliştirici Kütüphanesi
Yeni Arduino IDE 2.0 Kullanıma Sunuldu!Arduino IDE 2.0 Yeni Kart EklemeArduino IDE 2.0 Kütüphane Kurulumu
Arduino IDE 2.0 İndirme ve YüklemeArduino IDE 2.0 ile Arduino Cloud KullanımıArduino IDE 2.0 Seri Monitör ve Çizici
Arduino IDE 2.0 Kod Nasıl Yüklenir?Arduino IDE 2.0 Yazılım ve Sertifika Yönetimi
Arduino IDE 2.0 Otomatik Kod TamamlamaArduino IDE 2.0 Hata Ayıklama (Debugger)

Arduino IDE 2.0 sürümü ile hayatımıza giren ve eski sürümlere kıyasla en devrimsel özelliklerden biri yerleşik Donanımsal Hata Ayıklayıcıdır (Hardware Debugger). Hata ayıklayıcı, kodların mikrodenetleyici üzerinde çalışırken canlı olarak izlenmesini, register durumlarının incelenmesini ve değişken değerlerinin anlık değişimlerinin gözlemlenmesini sağlayan profesyonel bir yazılımsal/donanımsal araçtır.

Yazılım arayüzünde pini sürekli Serial.print() fonksiyonlarıyla tarayarak kod akışını bozmak yerine, donanımsal hata ayıklama arayüzü sayesinde işlemciyi istediğimiz satırda durdurabilir, hafızadaki verileri anlık analiz edebiliriz. Bu durum gömülü yazılım mimarisini daha derinlemesine anlamanızı sağladığı gibi gizli kalmış mantıksal hataları da saniyeler içinde çözmenizi sağlar.

En yeni kararlı arayüz sürümünü indirmek için resmi Arduino Yazılım Portalı sayfasını ziyaret edebilirsiniz.

Yazı İçeriği

Hata Ayıklayıcı ile Uyumlu Geliştirme Kartları

Yerleşik donanımsal hata ayıklama mimarisi, donanım seviyesinde debug arayüzü (SWD – Serial Wire Debug) barındıran tüm 32-bit ARM Cortex-M0+ tabanlı SAMD mimarisine sahip kartlarla tam uyumludur. Bu kartlar şunlardır:

  • Arduino MKR Zero
  • Arduino MKR WiFi 1010
  • Arduino MKR FOX 1200
  • Arduino MKR WAN 1300 / 1310
  • Arduino MKR GSM 1400
  • Arduino MKR NB 1500
  • Arduino MKR VIDOR 4000
  • Arduino Nano 33 IoT
  • Arduino Zero

Bu rehberimizde donanımsal entegrasyonu göstermek için Atmel-ICE / Segger J-Link prob cihazlarını ve MKR WiFi 1010 geliştirme kartını referans alacağız. Ancak buradaki adımlar yukarıda listelenen tüm SAMD mimarili donanımlara aynen uygulanabilir.

Hata Ayıklama (Debug) Panelinin Yapılandırılması

Donanımsal bağlantılarınızı sağladıktan sonra, Arduino IDE 2.0 arayüzündeki Hata Ayıklama panelini yapılandırarak testlere başlayabiliriz.

Hata Ayıklayıcı paneline arayüzün sol tarafındaki kenar çubuğundan (Sketchbook, Kart Yöneticisi ve Kütüphane Yöneticisi ile aynı grupta yer alan hata ayıklama simgesine tıklayarak) kolayca erişebilirsiniz.

Ancak bu panele tıklamak sadece arayüzün yerleşim şablonunu açar. Canlı donanımsal hata ayıklama işleminin başlayabilmesi için, üst araç çubuğunda yer alan “Start Debugging” (üzeri çizili böcek simgesi) butonuna tıklamanız gerekmektedir:

Arduino IDE 2.0 Hata Ayıklama(Debugging)
Arduino IDE 2.0 Hata Ayıklama(Debugging)

Hata ayıklayıcıyı aktif olarak kullanabilmek için, bilgisayarınız ile kartın SWD pinleri arasında köprü kuracak harici bir donanımsal programlayıcı proba (Örn: Segger J-Link veya Atmel-ICE) ihtiyacınız olacaktır:

Hata Ayıklayıcı Donanım Bağlantısı

Canlı izleme yapabilmek için öncelikle kodumuzun derleyici tarafından optimize edilip satır atlamaması adına “hata ayıklama sembolleriyle (debug symbols)” derlenip karta yazılması gerekir. uPyCraft veya Arduino arayüzünde bu işlemin otomatik yapılandırıldığını doğrulamak için üst menüdeki “Optimize for Debugging” ayarını kontrol edin:

Debugging Optimizasyon Seçeneği

Önemli Donanım Kuralı: Eğer resmi Arduino Zero kartını kullanıyorsanız, hata ayıklama sinyallerinin aktarılabilmesi için USB kablonuzu kart üzerindeki “Programming Port” (Programlama Yuvası) soketine bağlamalısınız.

Bu uygulama örneğimizde temel LED yakıp söndürme şablonunu kullanacağız. Koda Dosya > Örnekler > 01.Basics > Blink adımlarından kolayca ulaşabilirsiniz. Kodu derleyip kartınıza yükleyin. Yükleme bittiğinde alttaki çıktı konsolunda bildirim mesajı görünecektir.

1. Kesme Noktaları (Breakpoints) Tanımlama

Hata ayıklamanın en temel mekanizması Kesme Noktası (Breakpoint) oluşturmaktır. Kesme noktaları, işlemci çekirdeğinin çalışırken tam olarak istediğimiz satıra geldiğinde duraklatılmasını sağlar. Böylece o satırdaki değişkenlerin durumunu inceleyebiliriz. Bir kodda donanımsal limitler dahilinde çok sayıda kesme noktası tanımlayabilirsiniz.

Bu test projemizde, LED’in durumunun değiştiği 33. ve 36. satırlara birer kesme noktası atayacağız. Bunun için kod editöründe satır numarasının hemen solundaki boşluğa farenizle tıklamanız yeterlidir. Kırmızı bir daire simgesi belirecektir:

Kesme Noktası Atama

Şimdi kod üzerinde asenkron gezinebiliriz. Hata ayıklama başlatıldığında işlemci ilk olarak çekirdeğin standart giriş fonksiyonunda (setup başlangıcında) otomatik olarak duraklar. Bu adımı geçmek için kontrol çubuğundaki Devam Et (Play/Pause) butonuna tıklayın.

İşlemci anında ilk tanımladığımız kesme noktası olan 33. satıra kadar tam hızda çalışacak ve burada duracaktır. Devam et butonuna tekrar tıkladığımızda ise 36. satırdaki kesme noktasına atlayacaktır (Aralardaki 34. ve 35. satırlardaki komutlar arka planda işlemci tarafından çalıştırılmış ancak ekran bizi o satırlarda bekletmemiştir):

Kesme Noktası Kontrolü

2. Üzerinden Adımlama (Step Over)

Step Over (Üzerinden Adımla) işlevi, program akışını satır satır ve asenkron olarak işletmenizi sağlar. İşlemci o satırdaki fonksiyonun içerisine girmeden, doğrudan o satırı yürütür ve bir sonraki satıra geçer. Bu sayede her kod satırının işlemci üzerindeki anlık hafıza ve register etkilerini tek tek gözlemleyebilirsiniz:

Step Over Fonksiyonu

3. İçine Adımla (Step In) ve Dışına Adımla (Step Out)

Eğer satırda çağrılan bir fonksiyonun (Örn: digitalWrite() veya kendi yazdığınız özel bir metot) arka plandaki çekirdek dosyalarındaki asıl C++ tanımlama kodlarını incelemek istiyorsanız Step In (İçine Adımla) komutunu kullanırsınız. İşlemci o fonksiyonun tanımlandığı kaynak dosyaya (Arduino core API dosyalarına) atlar:

İlgili fonksiyonun içindeki teknik detayları inceledikten sonra, tekrar kendi yazdığınız ana kod sayfasına ve kaldığınız satıra geri dönmek için ise Step Out (Dışına Adımla) komutunu kullanmanız yeterlidir:

Step In ve Step Out

İçine ve dışına adımlama komutları; özellikle digitalRead, analogWrite veya Serial.println gibi hazır kütüphane fonksiyonlarının arka planda register seviyesinde donanımı nasıl kontrol ettiğini öğrenmek ve profesyonel kod analizi yapmak için mükemmel birer araçtır.

Genel Özet

Bu rehberimizde, gömülü sistem geliştirme süreçlerinde hata oranını minimize eden en güçlü araçlardan biri olan donanımsal hata ayıklama mimarisini Arduino IDE 2.0 arayüzü üzerinden inceledik. J-Link ve Atmel-ICE entegrasyonu, kesme noktası (breakpoint) atama protokolleri, adım adımlama (Step Over) ve fonksiyon içine girme (Step In) metotlarını pratik olarak doğruladık. Bu profesyonel araç, gömülü projelerinizde hata yakalama süreçlerinizi inanılmaz derecede kolaylaştıracaktır.

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.