TOSSIM'de GDB İşleyicisinin Kullanımı

Yazar:



TOSSIM'in önemli bir avantajı, bilgisayarda çalıştığından dolayı "gdb" gibi geleneksel hata ayıklama araçlarının kullanılabiliyor olmasıdır. Bununla birlikte TOSSIM'de, çok sayıdaki düğüm için ayrı bir olay simülasyonu olduğundan, geleneksel olan, adım adım hata ayıklama teknikleri yalnızca bir etkinlik (event) temelinde çalışır. Çapraz olaylar için çalışmaz.


Maalesef ki gdb NesC için değil, genellikle C için tasarlanmıştır. NesC'nin bileşen modeli tek bir komut için birden çok sağlayıcıya sahip olacağı anlamına gelir. Belirli bir komuttan yararlanmak veya komuta başvurmak için bileşen, arabirim ve komutun belirtilmesi gerekir. Örneğin, LedsC'nin Leds arayüzünün redOff komutunu kesmek için, şu yapılmalıdır :

 gdb build/pc/main.exe  // start gdb

(gdb) break *LedsC$Leds$redOff
Breakpoint 1 at 0x804c644: file tos/system/LedsC.td, line 97.

run 1    

LedsC, geçiş komutları için açma kapama işlemlerini tutar. gdb işlevinin doğru ayrıştırılması için "*" ifadesini eklemek önemlidir.

Değişkenler de benzer şekilde isimlendirilir. Örneğin, LedsC'nin, ledsOn değişkenini ekrana basmak için yazılması gereken kod :

(gdb) print LedsC$ledsOn
$3 = '\0' 

Aslında üstte gösterilen çıktı tamamiyle doğru değil. Çünkü TOSSİM'de, ledsOn tek bir uint8_t değil, 1000'in üzerinde bir dizi. Bu işlem, TOSSIM'in birden fazla düğümün durumunu, n bileşene sahip olan dizilerin nasıl derlendiğini işler. Buradaki "n" ifadesi, maksimum simülasyon boyutudur.

Ancak bir düğüm, bir bileşenin durumuna eriştiğinde, kendi kimliğine (ID) bağlı olarak dizinin içine indeksler. Bu nedenle, belirli bir kod durumunu çağırmak için dizinin doğru dizinlenmesi gerekiyor:

(gdb) print LedsC$ledsOn[tos_state.current_node]
$2 = 0 '\0'

Örneğin siz de adı VAR olan bir gdb olay işleyicisi yapabilirsiniz. Bunun için tos/platform/pc/ klasörü içerisinde .gdbinit adında bir dosyaya sahip olmalısınız. Eğer TinyOS klasörünüzde .gdbinit dosyası yoksa, kendiniz oluşturabilirsiniz. Böyle bir dosyaya sahipseniz, içine yalnızca şunu eklemeniz yeterli olacaktır :

(gdb) VAR LedsC$ledsOn
$3 = 0 '\0'

GDB İle İlgili Daha Detaylı Bilgi Edinmek İçin Buraya Tıklayınız.

Bu yazının orjinaline şu linkten ulaşabilirsiniz : https://www.cse.iitd.ernet.in/~pulkit/embedded2/docs/lesson5.html

Yazının çevirisi tamamen Ali ARSLAN tarafından yapılmış olup, ilk defa Blogkafem.net üzerinden yayınlanmıştır. Kopyalamanız halinde lütfen kaynak gösteriniz. Konuyla ilgili farkettiğiniz çeviri veya yazım hatalarını, aşağıdaki yorum formu aracılığıyla iletebilirsiniz. İyi çalışmalar.

Thanks to Indian Institute of Technology Delhi for TinyOS documentation that they present. (Sundukları TinyOS dokümanları için Hindistan Teknoloji Enstitüsü'ne teşekkürler.)

0 yorum:

Yorum Sayfası :


Yorum formuna konuyla ilgili görüş ve sorularınızı bırakabilirsiniz.

Yorumunuza mümkün olan en kısa sürede dönüş yapılacağından emin olabilirsiniz.


Eklenen yorumlar, moderatör onayından sonra yayınlanmaktadır.

BLOGKAFEM.NET © Copyright 2008-2023
Sitedeki yazıların her hakkı BLOGKAFEM.NET sitesine aittir.
Kopyalanması halinde lütfen kaynak gösteriniz.
DMCA.com Protection Status
Anasayfa | Hakkında | İletişim