Forum: Mikrocontroller und Digitale Elektronik Debugging mit AVR-GDB und AVARICE unter ECLIPSE JUNO


von Peter K. (peta)


Lesenswert?

Hallo,

ich bin verzweifelt, denn seit vielen Tagen schon versuche ich ein 
Debugging von Funktionen mit den Komponenten AVR ATmega162, 
AVR-Dragon (JTAG), avr-gdb und AVaRICE über USB unter Eclipse 
Juno hin zu bekommen.


HINTERGRUND

Grundlage für meine bisherige Installation und Konfiguration ist das 
Tutorial http://avr-eclipse.sourceforge.net/wiki/index.php/Debugging , 
das leider für eine ältere Version von Eclipse und nicht für Juno 
erstellt wurde. Einziger Unterschied scheint in den 
Einstellmöglichkeiten der Debug *Configurations* zu liegen. Dort gibt 
es z.B. bei Juno weder "Local Application" noch "GDB Hardware 
Debugging". Die Einstellmöglichkeiten passen grob zu "Application" bzw. 
"Remote Application" in Juno. Aber eben nicht ganz, so dass ich hier 
die Quelle für meine Probleme vermute.


DIES FUNKTIONIERT SCHON

Prinzipiell funktioniert die USB-Verbindung zum AVR-Dragon über den 
"libusb-win32"-Treiber. Per DOS-Prompt sowie über Eclipse's "Project 
Properties / AVRDude" lassen sich z.B. die Controllerdaten auslesen 
(avrdude). Das Kompilieren funktioniert im Eclipse ebenfalls und das 
erzeugte HEX-File lässt sich über den "AVR-Button" auf das Target laden 
und ausführen (genutzt wird dazu avrdude). Der AVaRICE-Server lässt sich 
fehlerfrei über DOS oder über die in den "External Tools Configurations" 
eingestellten Parametern starten (Port 4242). Per DOS-Prompt kann 
"avr-gdb" gestartet, händisch die Kommunikation über "target remote 
localhost:4242" eingerichtet und das programm mit Hilfe der 
entsprechenden .elf-Datei debuggt werden.


PROBLEM

Wenn per Eclipse nun der eingerichtete Debugger (avr-gdb) unter Angabe 
der Projektdateien und der Verbindungs-Konfigurationen gestartet wird, 
dat die ELF-Datei des Projekts nur noch die Größe von NULL Bytes. Zwar 
erscheint keine Fehlermeldung in den Eclipse-Konsolen, allerdings wird 
aber die Debug-Perspektive mit entsprechend reichhaltiger (wie im 
Tutorial dargestellter) Information nicht sichtbar. Jegliche Aktivität 
meinerseits führt dazu, dass ich den AVR-Dragon resetten muss und 
Eclipse neu starten, da die Verbindung zu den Programmen (Server und 
Debugger) irgendwie korrupt wurden.


Gibt es jemanden, der das Debugging unter Eclipse Juno mit dem avr-gdb 
und AVaRICE bereits erfolgreich durchführen kann und mir entsprechend 
Hilfestellung für die Konfigurierung leisten könnte? Wenn ich 
irgendwelche Details ausführen soll, bitte einfach nachfragen.

Vielen Dank schonmal.
Peter

von Peter K. (peta)


Lesenswert?

keiner eine Idee? Ist sicher eine Kleinigkeit für die Experten...

Gruß
Peter

von Peter K. (peta)


Lesenswert?

Hallo,

nach mehr als einem halben Jahr Bedenkpause nochmal die Frage nach einer 
Lösung bzgl. des oben erwähnten Problems, dass sich bei mir der avr-gdb 
mit der (nun schon fast nicht mehr neuen) Version "Juno" der 
Eclipse-Umgebung nicht gescheit starten und verwenden lässt.

Das Tutorial von damals (s. Link im ersten Posting dieses Threads) 
enthält immer noch die gleichen Abbildungen und Inhalte wie damals bzgl. 
der "Debug Configurations". Das Problem ist weiterhin, dass scheinbar in 
der installierten Kombination von CDT und AVR Plugin keine entsprechende 
Konfigurierbarkeit für z.B. "localhost" des gdbserver existiert.

Nun wäre die Frage (in der Hoffnung, dass in der verstrichenen Zeit 
Erfahrung zu diesem Thema gewachsen ist):

1. Welche Version der Tools/Plugins könnte mir helfen, eine 
entsprechende Konfigurierbarkeit herzustellen?

2. Alternativ wäre mir ja auch geholfen, wenn ich wüsste, auf welche 
Weise ich Eclipse dazu bringen kann, meine eigenen Vorgaben (die ich 
z.B. über die DOS-Shell eingebe) für den Aufstart von avr-gdb direkt zu 
verwenden. Und dann Eclipse mit der Debugging-GUI weiter arbeiten zu 
lassen.

Es scheint wirklich nur der Aufstart zu sein.

Danke.
Peter

von Jörg E. (jackfritt)


Lesenswert?

Ich kann dich beruhigen. Ich habe es auch selbst nie hinbekommen.

von Peter K. (peta)


Lesenswert?

Jörg Esser schrieb:
> Ich kann dich beruhigen. Ich habe es auch selbst nie hinbekommen.

Na, so richtig beruhigt bin ich noch nicht ;-)

Was verwendest Du denn zum Debuggen, Jörg?

von Peter K. (peta)


Lesenswert?

UPDATE

Mittlerweile habe ich sämtliche sinnvolle Eclipse-Versionen ausprobiert: 
Kepler, Juno und selbst Indigo (letzteres wird in den Tutorials oft 
genannt). Für KEINE der Installationen existiert die in den 
Konfigurations-Anleitungen des AVR-eclipse Plugin erwähnten 
Einstellungsmöglichkeiten nach dessen Installation.

Für mich heißt das, dass es wohl bezüglich der Debugging-Funktionalität 
zu einem fehlerhaften Update des Plugins gekommen ist. Dadurch, dass man 
nicht einmal die Plugin-Version zur Installation wählen kann, wird 
automatisch die neueste (fehlerhafte) Plugin-Version installiert.

Einwände von der Community?

von Jörg E. (jackfritt)


Lesenswert?

Ich "debugge" über die serielle, LED oder Oszi ;)

von Peter K. (peta)


Lesenswert?

Jörg Esser schrieb:
> Ich "debugge" über die serielle, LED oder Oszi ;)

Bei größeren Projekten kommst Du damit aber schnell an die Grenzen, 
oder? Debugging mit den verfügbaren freien Tools ist eigentlich genial, 
wenn es denn funktionieren würde...

von Jörg E. (jackfritt)


Lesenswert?

Wenn das wörtchen "wenn" nicht wär...
Ansonsten is das nur ein Hobby und meine Projekte sind übersichtlich.
Echte Kerle brauchen keinen Debugger ;)

von DaVo (Gast)


Lesenswert?

Ich hatte GENAU die gleichen Probleme beim Debuggen (Eclipse Kepler, 
aktuellste Versionen von Eclipse CDT und AVR Eclipse). Habe die Probleme 
nach einigen Stunden suchen gefunden.

Ich teste mit einem AVR Dragon und Programmiere/Debugge einen 
Atmega1284p über JTAG mit Avarice unter Linux

Möglich ist:
- Breakpoints setzen
- Steppen

Habe meine gefundene Problemlösung für die Nachwelt im Wiki abgelegt 
(http://www.mikrocontroller.net/articles/AVR_Eclipse#Debugging_mit_Eclipse_Kepler) 
vielleicht kannst Du das mal für Dein Problem testen und ggf. editieren.

Viele Grüße
Daniel

von Peter K. (peta)


Lesenswert?

Hallo Daniel,

erstmal super, dass Du Dir mit dem WIKI Mühe gemacht hast. Deine 
Beschreibung ähnelt den Beschreibungen einiger älterer Tutorials, die 
nun aber aufgrund des Nicht-Allgemein-Funktionieren-Wollen unter Eclipse 
wieder verschwunden sind.

Das Problem ist allerdings, dass genau das von Dir erwähnte "GDB 
Hardware Debugging"-Profil bei manchen Eclipse- und CDT-Installationen 
nicht mehr auffindbar ist. Und nur in diesem Profil (und vielleicht noch 
einem weiteren Profil, das aber ebenfalls nicht mehr überall vorhanden 
ist) existieren unter dem Debug-Reiter die gewünschten 
Einstellmöglichkeiten vollständig.

Siehe auch http://www.eclipse.org/forums/index.php/t/458139/

Es hat den Anschein, als wäre dies auch kein AVR-spezifisches, sondern 
ein generelleres Problem bzgl. des Plugin-Handling innerhalb der IDE.

Wie hast Du es denn geschafft, dass bei Dir während der 
Eclipse-Installation das Profil "GDB Hardware Debugging" nicht 
verschwunden ist?

von Peter K. (peta)


Lesenswert?

So, nun habe ich schonmal das Profil "GDB Hardware Debugging" auftreiben 
können, das wohl in den aktuellen CDT-Installationen für Eclipse aus den 
Standard-Paketen herausgeflogen ist. Man muss es also separat 
nachinstallieren.

Dies kann man in Eclipse folgendermaßen finden/installieren:

(1) navigieren und auswählen von HELP / InstallNewSoftware...
(2) dann "Add..." und im Pfad-Feld dann
    "http://download.eclipse.org/tools/cdt/releases/kepler";
(3) hier findet man es unter "CDT optional features"
(4) nun einfach geradeaus installieren...

Nach erfolgreicher Installation lassen sich die oben erwähnten 
Einstellungen im Debug-Profil konfigurieren. Allerdings funktioniert die 
Nutzung (selbst nach langem hin und her und Herumgeklicke in den 
Konfigurationen) auf meinem Rechner mit Windows 7 nicht. Aktuell hakt es 
an folgenden beiden Stellen:

-> wenn ich im Startup-Reiter des Debug-Profils "Load image" auswähle, 
bleibt bei mir der Fortschrittsbalken zur Vorbereitung des Debug bei 93% 
stehen, nachdem die Verbindung zum AVaRICE-Server erfolgreich war. Ich 
muss Eclipse irgendwann beenden und neu starten.

-> wenn ich OHNE "Load image" debuggen will, lade ich zunächst das HEX 
(inclusive Debug-Code) auf den Prozessor. Dann starte ich das Debugging, 
sehe, dass die Verbindung mit AVaRICE klappt und sich sogar die 
Debug-View öffnet. Aber hier werden die Symbole scheinbar nicht gefunden 
(obwohl in den Profil-Einstellungen als Ladeanforderung spezifiziert).

Vielleicht kommen wir ja Stück für Stück weiter und schaffen eine 
erfolgreiche Ergänzung des WIKI-Artikels mit vereinten Kräften.

Gibt es sonst eine technisch interessierte Gruppe, die sich intensiver 
um AVR und das Debuging unter Eclipse kümmert? Vielleicht sind dort ja 
Experten, die das Thema schon durchgekaut haben und wüssten, an welchen 
Stellen welcher Aufwand zur Stabilisierung des Vorgangs getrieben werden 
müsste...

von Achim K. (aks)


Lesenswert?

Unter Linux habe ich es die letzten Tag zum Laufen gebracht. Ob es mit 
Windows tut, weiß ich aber nicht.

---------- (Linux) ----------------------------
Eclipse, Version: Kepler Service Release 1, Build id: 20130919-0819
AVR Eclipse Plugin 2.4.1
AVARICE 2.13
AVRDude 6.0.1
AVR-GDB 7.6
AVR8-GNU-TOOLCHAIN 3.4.3 (download von Atmel Seite)
-----------------------------------------------
AVRDragon (6.16, Version vom astudio 4.19)
ATTiny861A (habe ATTiny861 eingestellt, da der A,
wieso auch immer, vom plugin als nicht unterstützt
vom avrdude aufgeführt ist.)
-----------------------------------------------

AVR-GDB Eclipse Konfiguration:

Avarice lässt sich mit dem „C/C++ Remote Application → GDB (DSF) Manual 
Remote Debugging Launcher“ entsprechend einbinden.
Dazu kann man den Default Launcher für C/C++ Remote Application 
einstellen, oder man kann dies bei der jeweiligen Debug Launcher 
einstellen.
Default unter „Preferences → Run/Debug → Launching → Default Launchers“ 
dort „C/C++ Remote Application“ auswählen und dann auf „GDB (DSF) Manual 
Remote Debugging Launcher“ stellen.
Soll nur ein spezieller Debug Launcher angepasst werden, dann unter 
„Debug Configurations“ den entsprechenden „C/C++ Remote Application“ 
Launcher auswählen oder einen anlegen. Dort in der
„Main“ Einstellungsseite zuerst ganz unten dem „Using … Launcher“ mit 
„Select other ...“ auf „ GDB (DSF) Manual Remote Debugging Launcher“ 
stellen. Dazu muss auch der Haken bei "Use configuration specific 
setting" gesetzt sein. (Main Einstellseite verändert sich entsprechend).

Unter „C/C++ Application“ die .elf Datei angeben und das Project 
einstellen.
Unter „Debugger“ → „Main“ den avr-gdb als GDB debugger angeben
und bei „Debugger“ → „Connection“ dann Type „TCP“, den Host (meist wohl 
localhost) und die verwendete Port Number eingeben.

Beim Compilieren im Debug Modus verwende ich die Einstellung „Operating 
System Default“ für Debug Info Format“ (Project->Properties->AVR 
Compiler->Debugging).

avarice manuell vor dem Debugger starten.

: Bearbeitet durch User
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.