Forum: Mikrocontroller und Digitale Elektronik Haltepunkkt wird momentan nicht erreicht


von Thomas H. (datatom)


Lesenswert?

Hallo zusammen,

ich verwende Atmel Studio 7. Wenn ich in Schleifen und bei der 
If-Bedingung einen Haltepunkt setze, kann dieser nicht erreicht werden. 
Ich erhalte die Meldung: Haltepunkkt wird momentan nicht erreicht

Woran liegt das?

Vielen Dank und Grüße

datatom

von Mitlesa (Gast)


Lesenswert?

Versuche zunächst per Compiler-Option die Optimierung
auf Null zu setzen.

von eProfi (Gast)


Lesenswert?

Beispiel? Vermutlich wird die Bedingung nie true.

von Herbert B. (herbert_b)


Lesenswert?

Thomas H. schrieb:
> Ich erhalte die Meldung: Haltepunkkt wird momentan nicht erreicht
>
> Woran liegt das?

Schienenersatzverkehr?

Herbert

von Thomas E. (thomase)


Lesenswert?

Thomas H. schrieb:
> Woran liegt das?

In den meisten Fällen an der Optimierung.

von Donni D. (Gast)


Lesenswert?

Ich empfehle die Optimierung auf 'optimized for debugging'. Wenn ich soe 
ganz deaktiviere, dann bekomme ich komische Fehler. Bei der Einstellung 
Optimized for debugging nicht.

von Jim M. (turboj)


Lesenswert?

Wenn der Compiler ohne Optimierung komische Dinge tut, sollte man sich 
seinen Quelltext genauer anschauen - das deutet nämlich auf Fehler hin.

von A. S. (Gast)


Lesenswert?

Wenn es den im Code nicht gibt.

Warum, das steht im Quelltext.

von Thomas H. (datatom)


Lesenswert?

Jim M. schrieb:
> Wenn der Compiler ohne Optimierung komische Dinge tut, sollte man sich
> seinen Quelltext genauer anschauen - das deutet nämlich auf Fehler hin.

Die Haltepunkte dieser Schleife wurden nicht erreicht:

for(i = 0; i <= 25; i++) {
    check = memcmp(USART0_RxBuf_global, String_CREG_value, i);
    if(check == 0)
    {
     connected = 1;
    }
    else
    {
     connected = 0;
    }
  }

Ich habe die Variablen beim debuggen überwacht. Sie hatten jeweils den 
Wert "unknown location". Erst als ich die Variablen aus der Funktion 
ausgelagert habe, konnte ich die Haltepunkte erreichen.

Also stimmt das wohl mit dem Fehler. Aber wieso? Die Variablen sind 
folgendermaßen angelegt:

  int connected;
  int check = 1;
  int i;

von stromverdichter (Gast)


Lesenswert?

Hi Tom,
du musst lernen deine Probleme in Teilprobleme zu splitten. Weißt du 
eigentlich, was an den beiden Pointern des Compares steht? Warum 
vergleichst du erst ein Zeichen und dann immer mehr?
Also erst mal die 2 Strings testweise selbst definieren und dann die 
Codeausführung schon vor dem ersten Aufruf schrittweise durchführen. 
Dann siehst du, was los ist. Optimierung musst du abschalten, sonst 
fehlen dir Codeteile, wenn dein Compiler Wege sieht, unsinnige Abfragen 
von dir wegzuoptimieren.

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.