Forum: Mikrocontroller und Digitale Elektronik Manche breakpointe können nicht ausgeführt werden


von Brechpunkt (Gast)


Lesenswert?

Hallo,

mir ist nun schon öfter vorgekommen, dass breakpointe in bestimmten 
Zeilen während dem debuggen manchmal nicht ausgeführt werden können. 
Aktuell sitze ich gerade am AVR32 FREERTOS und versuche einfach nur die 
PWM Funktion der LED zu debuggen. Das die Funktion richtig läuft, sehe 
ich anhand der LED.

Nur innerhalb dieser Funktion durch zu steppen geht nicht. Beim 
breakpoint wird zwar angezeigt,dass er nicht ausgeführt werden kann 
(durch einen nicht ausgefüllten, roten Kreis im AVRstudio), aber nicht 
warum.
Versuche ich hinein zu springen, wird dieser Teil übersprungen.

Das Problem ist mir auch schon bei Chips anderer Hersteller aufgefallen 
und ich wollte jetzt endlich mal nachhaken woran das liegt.
Ich hoffe jemand hat einen Tipp.

Um die Ursache ein zu grenzen, habe ich die Anzahl der breakpoints auf 
einen reduziert und die Optimierung für den compiler auf 0 gesetzt.

von Oliver J. (skriptkiddy)


Lesenswert?

Hast du die Optimierungen ausgeschalten? Es kann sein, dass der Compiler 
einfach etwas wegoptimiert und wenn du deinen Breakpoint auf eine 
wegoptimierte Codezeile setzt, dann kann man da natürlich nicht 
anhalten.

Gruß Oliver

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

es ist auch möglich, dass Debug-Informationen fehlen - wenn du z.B. 
fertige Library-Funktionen benutzt. Üblicherweise kann man den 
Sourcecode mit oder ohne Debug-Infos übersetzen, weil man diese ja nicht 
mit dem fertigen Produkt ausliefern will, und wenn du keinen Sourcecode 
hast, erübrigt sich die Frage sowieso. Dann kennst du, und auch das 
System, nur den Einspringpunkt, nicht die einzelnen Zeilen oder 
Anweisungen.

Gruss Reinhard

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.