Forum: Compiler & IDEs Zeilennummerierung beim HLL Debuggen


von T. E. (ter)


Lesenswert?

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

von Thorsten Luftmann (Gast)


Lesenswert?

Weil der Compiler aus einer (kompakten) Zeile C 50 Zeilen Assembler 
erzeugt um die gestellte Aufgabe umzusetzen?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Vor allem kann der Compiler den Code einer Zeile C ziemlich ,streuen',
d. h. er wird verflochten mit Code aus anderen C-Zeilen.

von T. E. (ter)


Lesenswert?

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
Noch kein Account? Hier anmelden.