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 : http://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.)





Hey!

Blogkafem'de okuduğunuz içeriklerle ilgili kişisel Twitter hesabım üzerinden benimle iletişme geçmek isterseniz Twitter adresim : www.twitter.com/aliarslan10

Sosyal medya hesabım dışında Blogkafem'de okumuş olduğun içerik ile ilgili belirtmek istediklerinizi aşağıdaki yorum formuna yazabilirsin. En kısa sürede dönüş yapacağımdan emin olabilirsin. :)

Okuduğunuz içerik faydalı olduysa #blogkafem etiketiyle okuduğunuz içeriğin linkini Twitter'da paylaşarak Blogkafem'e destek olabilirsiniz.

0 yorum:

Yorum Sayfası :



Yorum yaparken dikkat edilmesi gerekenler;

1. Yorum Formunu doldurduktan sonra Profil Seç -> ADI/URL bölümünden isminizi yazıp yorum yaparsanız size karşı bir hitap şeklimiz olur. (URL kısmını boş bırakabilirsiniz.)

2. Anonim olarak yaptığınız yorumlar "Adsız" olarak gözükmektedir.

3. Türkçe yazım ve dilbilgisi kurallarına uymaya özen gösteriniz.

4. Küfür,hakaret,mail adresi veya konu ile ilgisi olmayan reklam amaçlı website adresi içeren yorumlar yayınlanmamaktadır.

Custom Search

Kafeyi Dikizleyenler :)

Blog Istatistik

BLOGKAFEM.NET

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