Stack overflow der keiner ist....

Gast #505095
Lesenswert?

verwende einen C167 als compiler keil. Mein problem ist, dass ich 
scheinbar immer einen stack overflow hab...
mit traps.c (file von keil, welches u.a. bei einem stack overflow einen 
interrupt auslöst) hab ich überprüft ob wirklich ein stack overflow 
vorliegt.  Dies, indem ich, soblad ich in diesen interrupt kommmen, die 
werte des SP, STKOV und STKUN über die serielle schnittstelle an den PC 
sende. Dabei stelle ich jeweils fest, dass der Stackpointer wie er soll 
irgendwo zwischen STKOV und STKUN liegt... Wie kann das sein? meine ein 
stack overflow liegt vor, wenn der SP unterhalb von STKOV liegt. dies 
ist aber nicht der fall... wie kann es daher sein, dass mit der 
entsprechende interrupt dauernd ausgelöst wird?????

mfg
Daniel
Gast #505593
Lesenswert?

Schreib bei der Initialisierung des µC den kompletten Stackbereich mit 
einem Muster voll; zb 0xAA.

Einene Stackoverflow kannst du dann daran erkennen wenn das Muster in 
den letzten Stackadressen überschrieben ist.

Du könntest aber auch einen Stackunderflow haben.

Gruß
Ralph
Gast #506990
Lesenswert?

hallo ralph,
gute idee, hab ich mal gemacht, und es ist so rausgekommen wie ich 
aufgrund anderer versuche erwartat habe, grosse teile des stacks sind 
trotz stack-overflow trap noch mit dem wert 0xAAAA beschrieben...

>>Du könntest aber auch einen Stackunderflow haben.
naja dann würde ein anderer Trap ausgelöst, ich würde es also merken... 
oder überseh ich was?

woran könnte das ganze liegen? Wie weiter?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren