Forum: Compiler & IDEs Studio 4.11 Debuggen im Single Step


von Martin (Gast)


Lesenswert?

hallo!

Studio 4.11 / ATMEGA 64 und sicherlich auch andere Derivate


Wenn man Einzelschritte abfahren möchte (mit "Step over" oder "Step
into") und es sind Interupts anhängig, so wird man stets in die
Interruptroutine hineingezwungen, und man hat Mühe, wieder an die alte
Stelle im Hauptprogramm zurückzufinden.

Hat jemand einen Tip, wie man dem Studio dieses abgewöhnen kann?

Gruß Martin

von Boris (Gast)


Lesenswert?

Hallo Martin,
deaktiviere doch im SREG das I-Register. Somit sollte kein Einsprung
mehr in die Int-Routinen erfolgen

Gruß
Boris

von Martin (Gast)


Lesenswert?

Danke für den Tip - eigentlich naheliegend!

Funktioniert erstmal prima und ist auch oftmals ausreichend.

Das Dumme ist nur, dass man damit die die Interrupt-Ausführung
unterbindet. Die Krönung wäre ein Auführen der Interrupts und trotzdem
ein Single Step auf die folgende Quelltextzeile. Aber das dürfte wohl
nicht möglich sein?

von Michael Wilhelm (Gast)


Lesenswert?

Probiere es doch mal mit der Option "Run to cursor". Platziere den
Cursor dahin, wo du debuggen willst und starte die Option. Da angelangt
stehen natürlich wieder Interrupts an und gehe nicht im Single step
weiter. sondern platziere den Cursor strategisch günstig auf die
nächste zu untersuchende Anweisung oder bedingung.

MW

von Martin (Gast)


Lesenswert?

hmmm..

für eine sequentielle Liste kein Problem.

aber oft steht man vor einer switch case anweisung, die viele
verzweigungen hat und obendrein noch im kopf einen funktionsaufruf
enthält.



switch( funktion() )
{
  case 5: ..... break;
  case 7: ..... break;
  case 9: ..... break;
  case 3: ..... break;
  case 1: ..... break;
  default: ....break;
}

Dummerweise kann man aber nur 2 oder 3 breakpoints setzen.

d.h. man kann nur hoffen, dass man die Verzweigung vorhersagen kann....

von Frank Simon (Gast)


Lesenswert?

Letzteres löst du, in dem du die Optimierung im Makefile auf 0 setzt.
Mit freundlichem Gruß
Frank

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.