Anlık Stack kullanım bilgisi

Başlatan ArifAhmet, 24 Şubat 2016, 15:00:42

ArifAhmet

Program calısırken stack kullanımını anlık olarak izleyebileceğim bir yöntem, tool var mıdır? Keil burada (http://www.keil.com/support/man/docs/armcc/armcc_chr1359124223721.htm) bırseyler anlatmış ama anladığımdan pek emin değilim.
Yaşasın Open Source!

z


Debug menüye gir. Programı koşturmadan önce R13 değerini bir kenara not et.

Programda stack değerini merak ettiğin satıra break point koy. Programı çalıştır. Program durduğunda R13 değerini oku ve ilk değerden bunu çıkart.

Bulacağın sonuç o ana kadar kullanılmış byte cinsinden stack kullanımını verir.

(User modunda kod yazdığını varsayıyorum)
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ArifAhmet

Benimde aklima ilk o geldi fakat bir sorun yok mu hocam. Oncelikle aklima takilan bir sorun var, memory allocation. Mesela elimde boyle bir pointer var.
char* ptr;


ve ben bunu su sekilde dolduruyorum.
strcpy(ptr,"birseyler");


Belki strcpy iceride malloc falan kullaniyordur fakat,

int i = 4;
while(i--)
  *ptr + i = 't';


Burada herhangi bir allocation yapilmiyor. Galiba bu ARM'in cortex mimarisinde bu arka tarafta derlenirken yapiliyor fakat emin degilim.
Ayrica ornegin ben son kod parcasinda malloc veya realloc kullanmadigim icin free fonksiyonunu da kullanamiyorum. Dolayisi ile bu stack'ten hic silinmiyor mu? Ayrica malloc edince bu heap'e mi giriyor. Burada kafam bayagi karisik.
Yaşasın Open Source!

Icarus

C dili programcın her zaman ne yaptığını çok iyi bildiğini düşünür ve yoluna çıkmaz.
Belki python, java, perl, ruby gibi diller size daha uygun olabilir...

z

Çok kesin değeri lazım değilse reset rutininde tüm ramı sil. Stack değerinde 0 adresinde tanımlı. Şüphelendiğin satırda işlemciyi durdur ve memoryi gözle. Stack alanında  0'dan farklı değer gördüğün her adres geçmişte kullanılmış demektir.

Bu desenden yararlanarak ilk mesajımdaki açıklamdan farklı olarak o ana kadar kullanılmış peak yapmış stack size hakkında fikir verir.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com