Kleiner Tip zum Simulieren mit AVR-Studio! Ein paar Schritte zurück

OP #1378059
Hallo, mich hat es immer schon genervt das ich beim Simulieren jedesmal 
bei einem Fehler das Programm von neuem durchsimulieren musste, gerade 
wenn man mit externen Interrupts arbeiten und immer die Pins 
aktivieren/deaktivieren muss um einen Interrupt auszulösen.

Dann habe ich mit Sprungmarken gearbeitet um durchgetestete 
Programmteile zu überspringen oder mit Broakponts um an bestimmten 
Stelle anzuhalten.

Das eigentlich Problem war aber, das man bei einem Fehler, trotzdem 
nochmal das Simulieren neustartet, um wieder an die Fehlerstelle 
zukommen. Hier wäre es nicht schlecht gewesen wenn man einfach mal 
einige Schritte im Programm zurück könnte.

Nun bin ich aber auf die Idee gekommen einfach den Programmcounter zu 
manipulieren. Ich merke mir also den Programmcounter an einer Stelle vor 
dem Fehler und wenn ich am Befehl mit einer unerwünschten Aktion vorbei 
geschlittert bin, setze ich den Programmcounter an die gemerkte Adresse 
und der gelbe Pfeil im Simulator geht wieder ein paar Schritte zurück.

Könnte das per JTAG auch funktionieren, habe JTAG noch nicht ausprobiert 
aber da die Sachen immer umfangreicher werden, wäre es schön das ganze 
in einer richtigen Umgebung testen zu können.
#1378079
Hallo,

und Simulator oder JTAG habe ein so gutes Gedächtnis, daß sie alle 
Registerwerte, I/O-Werte, Speicherwerte an jedem von Dir gewünschten 
PC-Stand mal schnell wieder passend setzen?

Das bezweifle ich mal...
Das müßtest Du dann wohl selbst machen, wenn das Ganze einen Sinn haben 
soll.

So hat es nämlich garkeinen Sinn.

Gruß aus Berlin
Michael
#1378098
Hallo,

Sven P. schrieb:
> Wobei die Idee eigentlich so genial ist, dass man so einen 'Verlauf'
> gleich einbauen müsste, finde ich. Vielleicht auch direkt in GDB oder
> so.

Was letztlich heißen würde, jeden ausgeführten Befehl mit seinen 
Veränderungen ab Register/Ram/IO/Flags zu protokollieren.
Oder eben das Programm jedesmal von vorn laufen zu lassen und nur 
automatisch die vom User gesetzten externen Änderungen abzuarbeiten.

Klappt aber spätestens bei echter Hardware und JTAG nicht mehr.

Gruß aus Berlin
Michael
Gast #1378101
Jo klar, aber aufm PC wär sowas machnmal schon hilfreich, finde ich. Ich 
mein, Speicher hat man im Zweifelsfall genug, selbst wenn mans z.B. nur 
auf C-Ebene protokolliert. Würde grad bei langwierigen Programmen 
helfen, wo man nach dem Neustart z.B. immer wieder dieselben Aktionen 
durcharbeiten müsste (Menüs, Eingaben...). Lässt sich nich immer alles 
automatisiern...
Gast #1378118
Du kannst auch einfach rechtklick machen und "set next statement" oder 
so anklicken. das geht genausogut ;-)

ja es geht auch mit JTAG, das ist wie im simulator + besser :-D

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.