www.mikrocontroller.net

Forum: Compiler & IDEs Zeilennummerierung beim HLL Debuggen


Autor: T. Erdmann (ter)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thorsten Luftmann (Gast)
Datum:

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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

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

Autor: T. Erdmann (ter)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.