Forum: Compiler & IDEs Debuggen in Eclipse geht nicht GDB <-> AVaRICE problem


von Jan W (Gast)


Angehängte Dateien:

Lesenswert?

Servus!

Ich habe vorgestern mein STK500/JTAGICE mkII Package bekommen und sitze 
jetzt schon zwei Tage daran das Zeug zum Laufen zu kriegen und reiße mir 
schon büscheweise das Haar aus. Programmieren geht (zwar komisch aber 
immerhin), debuggen nicht.

Ich bin mir nicht sicher woran das liegt. Was ich bis jetzt gemacht 
habe:
- eclipse mit CDT installiert
- winavr installiert
- avr eclipse plugin installiert
- LibUSB32 installiert
- AVaRICE in eclipse als tool eingebunden -> Startet jetzt
- Debuger in eclipse konfiguriert auf gdbserver, localhost 4242

So jetzt fängt das Problem an. Das debuggen lieft so erst mal gar nicht. 
Ich hab dann mal avarice gestartet und per kommandozeile den GDB 
benutzt. Konnte konnecten, hat mir programmcode mit list angezeigt, 
konnte breakpoints setzten, programmierte LEDs auf dem Target 
leuchteten, das lief also.

So dann hab ich gesehen das, in der console von eclipse wenn ich debugge 
irgendwelche komischen kommandos auf gerufen werden. Ich hab also 
angenommen, dass es das .dgbinit file ist das ich NIRGENDWO auf meiner 
festplatte finden konnte.

Ich habe dann ein eingenes gdbinit file geschrieben:
1
target remote localhost:4242
2
load
3
break main
4
continue

Dann ist er auch weiter gekommen, ich hab in der Console gesehen, dass 
AVarice mit GDB spricht, offensichtlich das Programm downgeloaded hat 
und dann bricht eclipse irgendwann mit folgender Fehlermeldung ab:
1
Target selection failed.
2
Remote communication error: Bad file descriptor.
3
Remote communication error: Bad file descriptor.
4
Remote communication error: Bad file descriptor.

Was soll das? Ich hab mal den AVaRICE log als datei angehängt, falls 
jemand damit was anfangen kann.

So, dann hab ich mal AVRStudio ausprobiert, das stürzt mit einer Visual 
C++ runtime error meldung ab solbald ich debuggen will. Programmieren 
geht hier.


Ach so und noch eine letzte Sache, wenn ich über eclipse den Flash 
programmiere, kommt jedesmal diese Ding-Dong ...Dong-Ding Usb 
gerärtegeräusch von windows. Das nervt...ist das normal?


Schon mal VIELEN DANK im Voraus!!!

Gruß Jan

von Ha Jo (Gast)


Lesenswert?

Hi Jan,

Du brauchst kein gdbinit File. Wenn Du GDBSEREVR wählst, dann
kannst Du diese Einstelleungen alle direkt dort machen. Ich glaube
unter "Connection". Bin diese Woche nicht zu Hause und kann es deshalb
nicht genau sagen.

Es reicht localhost und Port 4242 oder den, mit dem Du AVaRICE
startest.

Beim compilieren MUßT Du als Option -gstabs einstellen (nicht 
-gdwarf-2!!!).
Der AVR-GDB versteht kein dwarf-2.

Als Debugger mußt Du AVR-GDB einstellen, nicht GDB.

Soviel erstmal aus meiner Erinnerung. Bei mir läuft das
Debuggen ganz gut. Wenn ich wieder zu Hause bin (Sonntag), dann kann ich 
Dir
mehr sagen.

Gruß Joachim

von Jan W (Gast)


Lesenswert?

Danke für die Hilfe, aaaalso...

...ich hab jetzt mal das gdbinit rausgenommen.
Dann -gstabs beim Compiler eingestellt (vorher war keins von den 
genannten agrumenten eingestellt, also weder gstabs noch dwarf).
1
Als Debugger mußt Du AVR-GDB einstellen, nicht GDB.

Ich nehme mal an, du meist damit die exe die aufgerufen wird...? Das 
hatte ich jedenfalls schon. Es gibt im Ordner ja auch kein "nur"-gdb.

Jedenfalls rattert der dann wieder los und jetzt krieg ich folgende 
Meldung:
1
Download complete.
2
Waiting for connection on port 4242.
3
Connection opened by host 127.0.0.1, port 1147.
4
gdb communications failure: Connection reset by peer
5
gdb communications failure: Connection reset by peer

???

Was ich mich frage...wieso öffnet der zusätzlich noch port 1147? Ist das 
normal so?

Außerdem, wo steht, was eclipse tut, wenn ich auf debug klicke. Der tut 
und macht und ich weiß gar nicht wat der da macht.

Ich meine, wie geasgt, wenn ich das per hand mach geht es ja, deswegen 
nehme ich mal an, dass der was flasches sendet.

Ach, und das ELF-fil ist OK? Oder muss ich da was anderes einstellen?

Danke und Gruß Jan

von Ha Jo (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Jan,

ich habe Dir ein paar Screenshots angehangen. Dort siehst Du meine
Einstellungen. Den AVaRICE kannst Du auch in einem Konsolenfenster
starten. Z.B. so (ich nutze gerade einen ATMEGA32):

C:\Programme\WinAVR-20070525\bin\avarice.exe -2 -P atmega32 --jtag 
dev/com3:4242

Hier nutze ich den Debugger über COM3 an einem Windows-PC.

Er meldet sich dann so:
----------------------------------------------
AVaRICE version 2.6, May 15 2007 17:07:24

Defaulting JTAG bitrate to 1 MHz. Make sure that the target
frequency is at least 4 MHz or you will likely encounter failures
controlling the target.

JTAG config starting.
Found a device: JTAGICEmkII
Serial number:  00:b0:00:00:27:fc
Reported JTAG device ID: 0x9502
Configured for device ID: 0x9502 atmega32 -- Matched with atmega32
JTAG config complete.
Preparing the target device for On Chip Debugging.

Disabling lock bits:
  LockBits -> 0xff

Enabling on-chip debugging:
  Extended Fuse byte -> 0x3f
      High Fuse byte -> 0x1b
       Low Fuse byte -> 0x3f
Waiting for connection on port 4242.
----------------------------------------------

Wichtig ist die Portnr. 4242. Du kannst auch eine andere nehmen,
die mußt Du dann auch in Eclipse bei den DEBUG Optionen als Port 
angeben.

Zu den Screenshots, hier wird USB zum Debugger genutzt, nicht COM3 wie 
oben in meinem Beispiel für die Konsole angegeben.
1) Tool AVaRICE Debugging USB.gif
Ein Tool in Eclipse zum starten von AVaRICE als Debugger über USB.

2) Tool AVaRICE Programming USB.gif
Ein Tool in Eclipse zum starten von AVaRICE und programmieren des
AVRs mit dem Hexfile. Wichtig hier zur Info evtl. nur die Parameter 
unter "Arguments"

3) Debugger with AVaRICE1.gif
4) Debugger with AVaRICE2.gif
AVaRICE als Debugger in Eclipse einrichten.

Jetzt erst den AVaRICE startest entweder über ein
Konsolenfenster oder als Tool in Eclipse. Jetzt sollte dieser auf
eine Verbindung warten (Zielhardware auch einschalten!).

Dann in Eclipse die Combobox rechts neben dem Debug-Button anklicken
und dann auf "Debug..." klicken. In dem neuen Fenster auf den Button
"Debug" klicken und schon sollte es losgehen.
Du kannst auch statt auf "Debug..." auf "Organize Favorites..." klicken. 
Dort kannst Du Dir Deine Application einrichen. Sie erscheint dann 
zusätzlich im Menu nachdem Du die Combobox rechts neben dem Debug-Button
im Eclipse-Hauptmenu angeklickt hast.

Läuft bei mir immer problemlos.

Gruß Joachim

von Gilles R. (roodemol)


Lesenswert?

Hallo,

dieser Beitrag ist schon etwas älter aber ich habe ein ähnliches 
Problem. Installiert habe ich Eclipse 3.4 mit dem AVR Eclipse Plugin 
2.2. Manuelles debuggen in einer Shell funktioniert ohne Problem wenn 
ich aber die Einstellungen wie in den Bilden in Eclipse vornehme, 
passiert folgendes wenn ich debuggen will:
1
avarice --erase --program --file debug-test.elf  --jtag /dev/avrjtag :4242
2
AVaRICE version 2.7, Nov 20 2007 04:07:12
3
4
Defaulting JTAG bitrate to 1 MHz. Make sure that the target
5
frequency is at least 4 MHz or you will likely encounter failures
6
controlling the target.
7
8
JTAG config starting.
9
Hardware Version: 0xc3
10
Software Version: 0x80
11
Reported JTAG device ID: 0x9502
12
Configured for device ID: 0x9502 atmega32
13
JTAG config complete.
14
Erasing program memory.
15
Erase complete.
16
Preparing the target device for On Chip Debugging.
17
18
Disabling lock bits:
19
  LockBits -> 0xff
20
21
Enabling on-chip debugging:
22
  Extended Fuse byte -> 0xef
23
      High Fuse byte -> 0x19
24
       Low Fuse byte -> 0xef
25
Downloading FLASH image to target..................
26
27
Download complete.
28
Waiting for connection on port 4242.
29
Connection opened by host 127.0.0.1, port 52742.
30
gdb exited.

Woran kann das liegen?

MFG, Gilles

von 900ss (900ss)


Lesenswert?

Hast Du es evtl. schon gefunden? Ansonsten müßtest Du mal Jörg Wunsch 
antriggern, falls er hier nicht mitließt, einen neuen Thread aufmachen. 
Den sieht er evtl.. Oder Du schreibst Ihm eine PM.
Ich selbst habe keine Erklärung. Läuft Dein Programm denn an? Oder 
startest Du nur über "External Tools" das AVaRICE?
Hmmm... bei mir klappt das alles gut.

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


Lesenswert?

Ich bin da auch ratlos.  Offensichtlich baut ja eine GDB-Instanz eine
Verbindung auf ("target remote :4242"), aber schließt sich anschließend
wieder ("detach").  Frag mal im Thread über das Eclipse-Plugin nach
bzw. bei dessen Autor an, wie man die GDB-Kommandos im Plugin irgendwie
verfolgen kann.

von 900ss (900ss)


Lesenswert?

Also es sieht so aus, ja eine GDB Instanz verbindet sich und hängt sich 
dann scheinbar wieder ab. Als wenn das Testprogramm beendet wird.
Zur Info an Gilles: AVaRICE wird wieder beendet, wenn sich GDB verbunden 
hat und wieder beendet ist.
Demnach wird AVaRICE UND der GDB nacheinander gestartet und der GDB 
dann gleich wieder beendet.
Eigentlich ist das unüblich. Bei mir wird über "External Tools" nur der 
AVaRICE gestartet. Die eigentliche DEBUG-Session in Eclipse starte ich 
extra. Darum steht bei mir nach starten von AVaRICE als letzte Zeile:
1
Waiting for connection on port 4242.

Vielleicht hilft das ja weiter. Irgendwie scheint mir, als wenn mit 
einem "Klick" AVaRICE und der GDB gestartet werden. Evtl. gibt da 
Eclipse-Konsolenfenster noch mehr Auskunft.

von Gilles R. (roodemol)


Lesenswert?

Hallo, AVaRICE starte ich in einer Shell ganz normal mit den Befehl:
1
avarice --erase --program --file debug-test.elf  --jtag /dev/avrjtag :4242

als letzte Zeile erscheint bei mir dann auch:
1
Waiting for connection on port 4242.

Der Rest erscheint erst wenn ich auf das Debug Icon in Eclipse drücke.

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


Lesenswert?

Gilles R. wrote:

> Der Rest erscheint erst wenn ich auf das Debug Icon in Eclipse drücke.

Ja, und genau das ist wichtig zu erfahren, was hier genau im
Hintergrund passiert.  Es muss irgendwie das Zusammenspiel von
Eclipse mit dem GDB sein, was dem GDB zwar aufträgt, sich mit
AVaRICE zu verbinden, aber gleich danach die Verbindung wieder
zu beenden.

von Gilles R. (roodemol)


Lesenswert?

Hallo,

ich habe das ganze jetzt noch mal versucht, noch immer ohne erfolg. 
Allerdings habe ich mir die Ausgabe in der Konsole anzeigen lassen:
1
1-gdb-set confirm off
2
1^done
3
(gdb) 
4
2-gdb-set width 0
5
2^done
6
(gdb) 
7
3-gdb-set height 0
8
3^done
9
(gdb) 
10
4-interpreter-exec console echo
11
4^done
12
(gdb) 
13
5-gdb-show prompt
14
5^done,value="(gdb) "
15
(gdb) 
16
6-gdb-set auto-solib-add on
17
6^done
18
(gdb) 
19
7-gdb-set stop-on-solib-events 0
20
7^done
21
(gdb) 
22
8-gdb-set stop-on-solib-events 1
23
8^done
24
(gdb) 
25
9-target-select remote localhost:4242
26
9^connected,thread-id="0",frame={addr="0x00000000",func="__vectors",args=[]}
27
(gdb) 
28
10-environment-cd /home/gilles/workspace/test-prog
29
10^done
30
(gdb) 
31
11-environment-directory /home/gilles/workspace/test-prog /home/gilles/workspace/test-prog/.settings /home/gilles/workspace/test-prog/Release /home/gilles/workspace/test-prog/Release/src /home/gilles/workspace/test-prog/include /home/gilles/workspace/test-prog/src
32
11^done,source-path="/home/gilles/workspace/test-prog:/home/gilles/workspace/test-prog/.settings:/home/gilles/workspace/test-prog/Release:/home/gilles/workspace/test-prog/Release/src:/home/gilles/workspace/test-prog/include:/home/gilles/workspace/test-prog/src:$cdir:$cwd"
33
(gdb) 
34
12 info threads
35
&"info threads\n"
36
&"warning: RMT ERROR : failed to get remote thread list.\n"
37
12^done
38
(gdb) 
39
13-data-list-register-names
40
13^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18","r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29","r30","r31","SREG","SP","PC"]
41
(gdb) 
42
14-break-insert /home/gilles/workspace/test-prog/src/SineWaveGenerator.c:25
43
14^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x000000fc",func="main",file="../src/SineWaveGenerator.c",line="25",times="0"}
44
(gdb) 
45
15-break-disable 1
46
15^done
47
(gdb) 
48
16-break-insert -t main
49
16^done,bkpt={number="2",type="breakpoint",disp="del",enabled="y",addr="0x00000104",func="main",file="../src/SineWaveGenerator.c",line="39",times="0"}
50
(gdb) 
51
17-stack-info-depth
52
17^done,depth="1"
53
(gdb) 
54
18-stack-list-frames 0 1
55
18^done,stack=[frame={level="0",addr="0x00000000",func="__vectors"}]
56
(gdb) 
57
19-exec-continue
58
19^running
59
(gdb) 
60
19*stopped,thread-id="0",frame={addr="0x00000104",func="main",args=[],file="../src/SineWaveGenerator.c",fullname="/home/gilles/workspace/test-prog/src/SineWaveGenerator.c",line="39"}
61
(gdb) 
62
20 info threads
63
&"info threads\n"
64
&"warning: RMT ERROR : failed to get remote thread list.\n"
65
20^done
66
(gdb) 
67
21-stack-info-depth
68
21^done,depth="1"
69
(gdb) 
70
22-stack-list-frames 0 1
71
22^done,stack=[frame={level="0",addr="0x00000104",func="main",file="../src/SineWaveGenerator.c",fullname="/home/gilles/workspace/test-prog/src/SineWaveGenerator.c",line="39"}]
72
(gdb) 
73
23-data-list-changed-registers
74
23^done,changed-registers=["10","12","14","18","20","22","23","24","25","26","28","29","30","31","32","33","34"]
75
(gdb) 
76
24 info sharedlibrary
77
&"info sharedlibrary\n"
78
25-gdb-exit

Mit dieser Ausgabe kann mir vielleicht jemand weiterhelfen und mir sagen 
warum AVaRICE beendet wird.

Gilles

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


Lesenswert?

Eventuell fragst du ja mal beim Autor des Eclipse-Plugins an.  Ganz
kann ich dem hier nicht folgen, da ich es nicht 1:1 auf die GDB-
Kommunikation abgebildet bekomme.

Was mich stutzig macht ist das Ende:
1
24 info sharedlibrary
2
&"info sharedlibrary\n"
3
25-gdb-exit

OK, "info sharedlibrary" gibt beim AVR natürlich nichs aus, oder
genauer gesagt, den Satz:

No shared libraries loaded at this time.

Warum danach ein gdb-exit steht, habe ich keine Idee.  Offenbar
war es ja an dieser Stelle nicht deine Absicht, den GDB zu beenden.

von Thomas H. (innot)


Lesenswert?

Hi Gilles,

ich bin der Autor des Plugins, aber leider kann ich Dir direkt nicht 
weiterhelfen. Ich habe selbst noch keine JTAG Hardware, so dass ich mich 
bisher noch nicht um das Debuggen gekümmert habe.

Das wird sich mit der nächsten Version des Plugins (2.4) ändern, da ich 
mir für die Version das Thema Debugging vorgenommen habe. Aber vorher 
muss erstmal 2.3 fertig werden (die Beta ist ja schon raus).

Aber wenn ich es richtig gesehen habe gibt es Plugins speziell für das 
Debuggen über JTAG. Vielleicht helfen Dir die Plugins weiter:

1. http://www.zylin.com/embeddedcdt.html

2. Das offizielle CDT JTAG plugin auf der CDT Update-site unter "CDT 
Optional Features".
Für Eclipse 3.3/Europa: 
http://download.eclipse.org/tools/cdt/releases/europa/
Für Eclipse 3.4/Ganymede: 
http://download.eclipse.org/tools/cdt/releases/ganymede/

Letzteres ist, wenn ich es recht verstanden habe, eine Derivat des Zylin 
Plugins das etwas besser integriert ist, aber dafür nicht auf dem 
neusten Stand ist.

900ss: ich kann mich nicht mehr so genau erinnern. Benutzt Du nicht das 
Zylin Plugin?

Liebe Grüße,

Thomas

von 900ss (900ss)


Lesenswert?

Thomas Holland wrote:

>
> 900ss: ich kann mich nicht mehr so genau erinnern. Benutzt Du nicht das
> Zylin Plugin?

Nein, ich nutze Eclipse mit dem AVR-GDB und Avarice. Klappt problemlos.

@Gilles: Wie hast Du denn die Ausgabe in das Konsolenfenster gezaubert? 
Dann würde ich es auch bei mir mal machen und evtl. sieht man dann am 
Unterschied, wo es klemmt.

von Gilles R. (roodemol)


Lesenswert?

Hallo,

um an die Ausgabe zu kommen muss man folgendes machen, zuerst 
"shift+alt+q" drücken, gefolgt von "c" oder ganz einfach im Window Menü 
unter Show View aktivieren.

Unter "Debug Configurations" muss man dann noch "Verbose console mode" 
aktivieren.

Bei mir steht dann im Debug Fenster:
1
 <terminated> sinewave-generator.elf [C/C++ Local Application]
 wenn ich das aufklappe und auf
1
<terminated, exit value: -1>avr-gdb (9/22/08 7:43 PM)
 klicke kriege ich die Ausgabe.


Gilles

von 900ss (900ss)


Lesenswert?

Gilles R. wrote:
> um an die Ausgabe zu kommen muss man folgendes machen, zuerst
> "shift+alt+q" drücken, gefolgt von "c" oder ganz einfach im Window Menü
> unter Show View aktivieren.
Wie man an die Console kommt war mir schon klar, aber wie man den 
"Plapper-Modus" aktiviert, dass hatte ich verdrängt (verbose...).
Bei mir sieht es dann sehr ähnlich aus, bis auf das Ende. Da wird bei 
mir der GDB nicht beendet. Hast Du es schon mal mit einem ganz kleinen 
Testprogramm versucht? Ich werd auch nicht schlau draus.

1
85-gdb-set confirm off
2
85^done
3
(gdb) 
4
86-gdb-set width 0
5
86^done
6
(gdb) 
7
87-gdb-set height 0
8
87^done
9
(gdb) 
10
88-interpreter-exec console echo
11
88^done
12
(gdb) 
13
89-gdb-show prompt
14
89^done,value="(gdb) "
15
(gdb) 
16
90-gdb-set auto-solib-add on
17
90^done
18
(gdb) 
19
91-gdb-set stop-on-solib-events 0
20
91^done
21
(gdb) 
22
92-gdb-set stop-on-solib-events 1
23
92^done
24
(gdb) 
25
93-target-select remote localhost:4242
26
93^connected,thread-id="0",frame={addr="0x00000000",func="__vectors",args=[]}
27
(gdb) 
28
94-environment-cd D:\Daten\D\Projekte\EclipseWS\LEDUhr
29
94^done
30
(gdb) 
31
95-environment-directory D:/Daten/D/Projekte/EclipseWS/LEDUhr D:/Daten/D/Projekte/EclipseWS/LEDUhr/.settings D:/Daten/D/Projekte/EclipseWS/LEDUhr/Debug D:/Daten/D/Projekte/EclipseWS/LEDUhr/Release
32
95^done,source-path="D:/Daten/D/Projekte/EclipseWS/LEDUhr;D:/Daten/D/Projekte/EclipseWS/LEDUhr/.settings;D:/Daten/D/Projekte/EclipseWS/LEDUhr/Debug;D:/Daten/D/Projekte/EclipseWS/LEDUhr/Release;$cdir;$cwd"
33
(gdb) 
34
96 info threads
35
&"info threads\n"
36
&"warning: RMT ERROR : failed to get remote thread list.\n"
37
96^done
38
(gdb) 
39
97-data-list-register-names
40
97^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18","r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29","r30","r31","SREG","SP","PC"]
41
(gdb) 
42
98-break-insert -t main
43
98^done,bkpt={number="1",type="breakpoint",disp="del",enabled="y",addr="0x00000fba",func="main",file="../main.c",fullname="D:/Daten/D/Projekte/EclipseWS/LEDUhr/.settings/../main.c",line="98",times="0"}
44
(gdb) 
45
99-stack-info-depth
46
99^done,depth="1"
47
(gdb) 
48
100-stack-list-frames 0 1
49
100^done,stack=[frame={level="0",addr="0x00000000",func="__vectors"}]
50
(gdb) 
51
101-exec-continue
52
101^running
53
(gdb) 
54
101*stopped,thread-id="0",frame={addr="0x00000fba",func="main",args=[],file="../main.c",fullname="D:/Daten/D/Projekte/EclipseWS/LEDUhr/.settings/../main.c",line="98"}
55
(gdb) 
56
102 info threads
57
&"info threads\n"
58
&"warning: RMT ERROR : failed to get remote thread list.\n"
59
102^done
60
(gdb) 
61
103-stack-info-depth
62
103^done,depth="1"
63
(gdb) 
64
104-stack-list-frames 0 1
65
104^done,stack=[frame={level="0",addr="0x00000fba",func="main",file="../main.c",fullname="D:/Daten/D/Projekte/EclipseWS/LEDUhr/.settings/../main.c",line="98"}]
66
(gdb) 
67
105-data-list-changed-registers
68
105^done,changed-registers=["0","2","4","7","16","17","20","21","22","26","27","28","29","30","31","32","33","34"]
69
(gdb) 
70
106 info sharedlibrary
71
&"info sharedlibrary\n"
72
~"No shared libraries loaded at this time.\n"
73
106^done
74
(gdb)

von Gilles R. (roodemol)


Lesenswert?

Hallo, ich habe jetzt noch etwas herumprobiert und das Problem ein wenig 
eingekreist:

Ich habe folgendes gemacht:
1
avarice --erase --program --file sinewave-generator.elf  --jtag /dev/avrjtag :4242
2
3
AVaRICE version 2.7, Nov 20 2007 04:07:12
4
5
Defaulting JTAG bitrate to 1 MHz. Make sure that the target
6
frequency is at least 4 MHz or you will likely encounter failures
7
controlling the target.
8
9
JTAG config starting.
10
Hardware Version: 0xc3
11
Software Version: 0x80
12
Reported JTAG device ID: 0x9502
13
Configured for device ID: 0x9502 atmega32
14
JTAG config complete.
15
Erasing program memory.
16
Erase complete.
17
Preparing the target device for On Chip Debugging.
18
19
Disabling lock bits:
20
  LockBits -> 0xff
21
22
Enabling on-chip debugging:
23
  Extended Fuse byte -> 0xef
24
      High Fuse byte -> 0x19
25
       Low Fuse byte -> 0xef
26
Downloading FLASH image to target..................
27
28
Download complete.
29
Waiting for connection on port 4242.

danach habe ich in einem zweiten Terminal den gdb gestartet:
1
avr-gdb sinewave-generator.elf
2
GNU gdb 6.4
3
Copyright 2005 Free Software Foundation, Inc.
4
GDB is free software, covered by the GNU General Public License, and you are
5
welcome to change it and/or distribute copies of it under certain conditions.
6
Type "show copying" to see the conditions.
7
There is absolutely no warranty for GDB.  Type "show warranty" for details.
8
This GDB was configured as "--host=x86_64-linux-gnu --target=avr"...
9
(gdb) target remote localhost:4242
10
Remote debugging using localhost:4242
11
Connection opened by host 127.0.0.1, port 36588.
12
0x00000000 in __vectors ()
13
(gdb) list
14
30
15
31
16
32          /*
17
33           *  Initialize UART library, pass baudrate and AVR cpu clock
18
34           *  with the macro
19
35           *  UART_BAUD_SELECT() (normal speed mode )
20
36           *  or
21
37           *  UART_BAUD_SELECT_DOUBLE_SPEED() ( double speed mode)
22
38           */
23
39          uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
24
(gdb)

Soweit klappt noch alles einwandfrei. Sobald ich aber info sharedlibrary 
eingebe passiert follgendes:
1
(gdb) info sharedlibrary
2
../../src/gdb/solib.c:707: internal-error: TARGET_PTR_BIT returned unknown size 16
3
A problem internal to GDB has been detected,
4
further debugging may prove unreliable.
5
Quit this debugging session? (y or n)

Daraus schliesse ich dass der Fehler selbst nicht beim AVR Plugin liegt 
sondern irgendwo beim gdb.

Hat jemand eine Idee was das sein kann?

MFG, Gilles

von 900ss (900ss)


Lesenswert?

Du hast irgendeine alte Version des GDBs installiert. Welche WinAVR 
Version hast Du installiert? Meine ist WinAVR_20080512.
Merkwürdigerweise hast Du aber einen aktuelleren AVaRICE.

Hier die Ausgabe von meinem AVR-GDB:
1
C:\Bat>avr-gdb --version
2
GNU gdb 6.6
3
Copyright (C) 2006 Free Software Foundation, Inc.
4
GDB is free software, covered by the GNU General Public License, and you are
5
welcome to change it and/or distribute copies of it under certain conditions.
6
Type "show copying" to see the conditions.
7
There is absolutely no warranty for GDB.  Type "show warranty" for details.
8
This GDB was configured as "--host=i686-pc-mingw32 --target=avr".

von Gilles R. (roodemol)


Lesenswert?

Hallo,

ich habe die letzten Pakete installiert die bei meiner Distribution 
dabei sind.

als Ausgabe auf avr-gdb --version bekomme ich:
1
GNU gdb 6.4
2
Copyright 2005 Free Software Foundation, Inc.
3
GDB is free software, covered by the GNU General Public License, and you are
4
welcome to change it and/or distribute copies of it under certain conditions.
5
Type "show copying" to see the conditions.
6
There is absolutely no warranty for GDB.  Type "show warranty" for details.
7
This GDB was configured as "--host=x86_64-linux-gnu --target=avr".

Auf diesem Rechner habe ich KUbuntu 8.04 installiert, vielleicht kennt 
ja jemand eine Quelle für aktuellere Pakete.

MFG, Gilles

von zOttel (Gast)


Lesenswert?

Hier, nimm' das Script von Bingo600 
(http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=42631) 
und alles wird gut ;)

Zur Info: damit wird die Toolchain aus den jeweils aktuellen Sourcen 
erzeugt

von Gilles R. (roodemol)


Lesenswert?

Hallo,

habe mit dem Rat von zOttel und etwas Hilfe von Bingo600 das ganze jetzt 
am laufen.

MFG, Gilles

von Jan (Gast)


Lesenswert?

Ich hab mal eine ganz andere Frage. Ich habe das Debuggen mit Hilfe der 
Konsole zum laufen gebracht. Gibt es eigentlich auch die Möglichkeit in 
Eclipse mit der ganz normalen Debugansicht zu arbeiten, wie zum Beispiel 
beim AVR Studio die Debugansicht

von 900ss (900ss)


Lesenswert?


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.