Hallo Forum, ich kämpfe seit einiger Zeit mit einem lästigen Problem beim Debuggen, daher wollte ich mal fragen ob hier jemand ähnliches erlebt hat und evtl. die Ursache gefunden hat. Ich nutze WINAVR -GCC und AVRStudio in den aktuellen Versionen. In einem Projekt mit mehreren Files ergibt sich immer wieder in einer bestimmten Source ein Versatz zwischen der Anzeige des Debuggers und der aktuellen Position im Disassembling. Beim Durchsteppen steht der Zeiger im Source also manchmal 1-2 Zeilen unter dem zugehörigen Assmblercode. Das ist sehr verwirrend und macht die Fehlersuche sehr mühsam, da der Anzeige auf Sourceebene nicht getraut werden kann. Ich compiliere mit -O0, ich habe sämtliche Umlaute und Sonderzeichen aus den Kommentaren gelöscht und dann etlich male umkopiert und umformatiert aber ich finde keine direkte Ursache. Die Zeilenenden sind alle mit CRLF nach Windows Standard versehen. Das Problem tritt sowohl mit JTAG-MKII als auch mit AVR-ONE auf, es ist vermutlich durch die Zeilennumerierung des GCC begründet, welche durch irgendwas durcheinandergerät. Gruß Thomas
Weil der Compiler aus einer (kompakten) Zeile C 50 Zeilen Assembler erzeugt um die gestellte Aufgabe umzusetzen?
Vor allem kann der Compiler den Code einer Zeile C ziemlich ,streuen', d. h. er wird verflochten mit Code aus anderen C-Zeilen.
Danke für die Antworten, es war aber leider nicht die Lösung dabei. Es ist einfach so, daß im Disassemblerfenster normalerweise die HLL -Zeile über dem dazugehörigen Assemblercode erscheint. In diesem Fall aber ein Versatz auftrat. Der Cursor stand unter dem Aufruf einer Funktion aber diese wurde erst im nächsten Step wirklich aufgerufen, was am Disassembling leicht zu erkennen war. Das ist hier auch keine Folge von Optimierungen etc. da gcc mit -O0 nach meinen Erfahrungen ziemlich 1:1 das in Assembler darstellt, was man in C vorgegeben hat. Es scheint irgendwie eine Folge von Preprozessormakros zu sein. Nach einigen Umstellungen und Weglassen von diversen Includefiles scheint es irgendwie behoben, aber leider nicht gekärt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.