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
Gast
#5145487
Versuche zunächst per Compiler-Option die Optimierung auf Null zu setzen.
Gast
#5145515
Beispiel? Vermutlich wird die Bedingung nie true.
Thomas H. schrieb: > Ich erhalte die Meldung: Haltepunkkt wird momentan nicht erreicht > > Woran liegt das? Schienenersatzverkehr? Herbert
Thomas H. schrieb: > Woran liegt das? In den meisten Fällen an der Optimierung.
Gast
#5145724
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.
Wenn der Compiler ohne Optimierung komische Dinge tut, sollte man sich seinen Quelltext genauer anschauen - das deutet nämlich auf Fehler hin.
Gast
#5146185
Wenn es den im Code nicht gibt. Warum, das steht im Quelltext.
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;
Gast
#5146221
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.