Debuggen mit JTAG ICE MKII findet nicht alle Sourcen

OP #3854161
Lesenswert?
• ▲
▼
Hallo zusammen,

habe bereits etwas die Suchfunktion in Anspruch genommen, bin aber
aufgrund der Komplexität der Anforderung an die Formulierung
gescheitert bzw. schlichtweg nicht fündig geworden. Vielleicht kann
mir jemand einen Link auf einen bestehenden Beitrag für eine Lösung
nennen, ansonsten bitte ich so um Hilfe:

Konfiguration:

- Atmel Studio 4.18
- JTAG ICE MKII original (kein Nachbau)
- WinAVR-20100110 (die letzte mir bekannte Version)
- Prozessor z.B. ATMega644 oder ATxMega128
- benutze das JTAG Interface

Das Problem:

Beim Durchsteppen mit dem Debugger findet Atmel Studio nicht alle
Sourcen, zeigt also dann ggf. nichts an, man sieht dann plötzlich
nicht an welcher Stelle man im Code steht. Erst wenn man einen im
Code bekannten (und noch sichtbaren) Breakpoint setzt und dann den
Code bis dorthin laufen lässt (F5) findet man wieder eine
hervorgehobene Code-Zeile wo man sich befindet. Insbesondere
auffällig ist das bei _delay_ms(...) aber auch anderen Low-Level
Routinen.

Gibt es irgendwelche Anforderungen der Kombination Atmel Studio und
WinAVR, oder muss man den beteiligten Programme durch Settings noch
etwas mitteilen was ich nicht weiss? Oder gibt es spezielle Compiler
Flags für eine Debug-Version? Reihenfolge der Installation von
Studio und WinAVR (die beiden Beteiligten sind auf ihre
vorgeschlagenen Default-Verzeichnisse instelliert)?

Gruß

loocee
Gast #3854169
Lesenswert?
• ▲
▼
>Beim Durchsteppen mit dem Debugger findet Atmel Studio nicht alle
>Sourcen,

Die Sourcen von Librarys sind meist nicht vorhanden.
Über Library Funktionen machst du halt ein StepOver.
Also sowas wie (s)printf, itoa, strcpy, _delay_ms.
Im Prinzip alles was im Projekt nicht als C-Code vorhanden ist.
Gast #3854254
Lesenswert?
• ▲
▼
>Diesr Code ist normalerweise "von Hand" zu finden, so z.B ist
>_delay_ms () in der Header Datei delay.h (irgendwo im WinAVR-20100110)
>auscodiert.

_delay_ms ist jetzt aber ein schlechtes Beispiel.
Ohne Optimierung ist _delay_ms quasi unbrauchbar.
Siehe die Warnung in delay.h. Da fängst du dir
Floating Point Funktionen ein.

Mit Optimierung brauchst du deinen Debugger gar nicht erst anwerfen.
Da darf der Compiler alles so umbauen wie er möchte. Da gehen durchaus
ganze Codeteile oder Variablen flöten weil er sie nicht braucht.

Oder kurz zusammengefasst: Willst du _delay_ms verwenden?
Dann debugge nicht. Wenn du debuggen willst verwende _delay_ms nicht;)
OP #3854284
Lesenswert?
• ▲
▼
holger schrieb:

> _delay_ms ist jetzt aber ein schlechtes Beispiel.
> Ohne Optimierung ist _delay_ms quasi unbrauchbar.
> Siehe die Warnung in delay.h. Da fängst du dir
> Floating Point Funktionen ein.

Die Warnings kenne ich ....

Ein Aufruf von _delay_ms(...) mit Konstante als Übergabe
ergibt festverdrahteten Inline-Code und keine Floating Point
Operationen. Das würde man sehr schnell merken da sonst
FP Code (Grösse!) dazugelinkt wird .....

Klar kann man sich die Delays für den Debug-Fall mit
ifdefs ausblenden, aber ich hatte mir aus Erfahrung mit
anderen Debuggern erwartet dass so etwas einwandfrei
unterstützt wird.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.