PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm stürzt abundzu ab.



Accenter
11.05.2010, 23:55
Hab eine Haussteuerung mit Touchdisplay im Einsatz die immer wieder mal erweitert wird. Das ganze ist jetzt schon recht umfangreich mit viel Code drum macht es auch wenig Sinn den hier jetzt zu posten.

Abundzu friert mit beim bedienen des Menüs mal alles ein und nichts geht mehr. Der Watchdog löst dann aus und alles startet neu.

Wie kann ich den Fehler ausfindig machen? Was sind die heufigsten Ursachen? Endloschschleifen scheint es keine zu geben. Ich hab ne Menge Variablen im Einsatz. Kann es sein, dass da ein Speicher überläuft?

Wie wähle ich $framesize, $hwstack, $swstack richtig? Fragen über Fragen :-)

Jaecko
12.05.2010, 07:31
Ob ein Speicher überläuft oder ob nicht doch irgendwo Endlosschleifen auftauchen kann man nur sagen, wenn man den Code sieht.
Und ich behaupt jetzt einfach mal: Es gibt mindestens 1 Endlosschleife.

Accenter
12.05.2010, 11:52
Ich habe $framesize, $hwstack und $swstack mal vergrössert und hatte bisher keinen Absturz. mal sehen ob das nur Zufall war oder es wirklich daran lag.

Endlosschleifen kann ich mit hoher Wahrscheinlichkeit ausschließen. Das ganze ist nur mit GOSUB verlinkt, sollte also dadurch in keine Endlosschleife kommen. GOSUB gibt es aber reichlich, vielleicht war das der Grund.

peterfido
12.05.2010, 21:55
Ich gehe auch davon aus, dass eine Endlosschleife (Hauptschleife) existiert.
Wenn die Subs (Gosub) ineinander verschachtelt sind, brauchst Du mr HWStack. Subs (Declare...) benötigen mehr SW Stack, genau wie Funktionen.
Wieviel davon, kommt darauf an, wie kaskadiert das Programm ist.

Ich erhöhe den Stapelspeicher immer bis zum Limit. Wieviel noch frei ist, zeigt dir der Bericht (STRG+W) nach dem Kompilieren.

Jaecko
12.05.2010, 22:10
Ich meine, dass da mal irgendwo was stand von wegen jede Sub/Gosub/Function braucht 2 Byte, jeder Parameter ebenfalls.
Also kann man so schon mal grob nachrechnen, in welcher Hausnummer man sich da bewegt.