Forum: Compiler & IDEs Problem mit mega32 und dwarf-2


von Jens B. (sio2)


Lesenswert?

Compiling: main.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -DF_CPU=14745600UL  -Os 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=main.lst  -std=gnu99 -MD -MP -MF 
.dep/main.o.d main.c -o main.o
main.c:1: error: target system does not support the "dwarf-2" debug 
format

Ich hab die Vorlage des Makefile von MFILE benutzt und nur den 
Controllertyp und die Frequenz geaendert, und bekomme diese 
Fehlermeldung. Kann aber nicht wirklich etwas damit anfangen, und 
dwarf-2 benötige ich ja zum debuggen.
Worann kann das liegen?

besten Dank

SiO2

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


Lesenswert?

> Worann kann das liegen?

Daran, dass dein Compiler nicht für DWARF-2-Debuginformationen
konfiguriert worden ist.

> und dwarf-2 benötige ich ja zum debuggen.

Nur für AVR Studio.  Offenbar hast du ja keinen AVR-GCC aus
dem WinAVR-Paket, dann lass uns vielleicht ja mal ein wenig
mehr über deine Umgebung wissen.  Meine Kristallkugel ist leider
gerade in der Reparatur.

von Dirk (Gast)


Lesenswert?

Hi, wieso dwarf-2 ? Ich bin der Meinung das zum Debuggen heutzutage ELF 
benutzt wird.

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


Lesenswert?

Dirk wrote:

> Hi, wieso dwarf-2 ? Ich bin der Meinung das zum Debuggen heutzutage ELF
> benutzt wird.

Genau.  Wofür ein Auto, wenn ich doch einen Golf fahre.

von Jens B. (sio2)


Lesenswert?

# Debugging format.

#     Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.

Deswegen. Ich fange grad mit C aufm AVR an, und bin ausgegangen, das das 
"Standard" ist zum debuggen.
Also brauch ich nur
DEBUG = ELF ?

@Jörg. Ich bin davon Ausgegangen, das es , egal ob win oder GNU/Linux, 
gleich ist auf den Systemen.
avr-libc 1.4.4
avr-binutils 2.16
avr-gcc 3.4.4

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


Lesenswert?

Jens B. wrote:

> #     Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.

> Deswegen. Ich fange grad mit C aufm AVR an, und bin ausgegangen, das das
> "Standard" ist zum debuggen.
> Also brauch ich nur
> DEBUG = ELF ?

Nein.  Steht ja auch nicht da, dass es das gäbe.  ELF-Files sind das
alles, egal ob mit stabs oder DWARF-2 als Debuginformation.

> Ich bin davon Ausgegangen, das es , egal ob win oder GNU/Linux,
> gleich ist auf den Systemen.

Nein, leider nicht.  Erstens kommen die Tools leider nicht ohne
Patches aus, und das Einschalten der Möglichkeit,
DWARF-2-Debuginformation zu generieren, braucht zumindest einen
nicht-default-Option zu ./configure.  Du musst also schon mal wissen,
wie derjenige, der deinen Compiler gebaut hat, sein configure gemacht
hat.

Zweitens ist das DWARF-2 bislang für den AVR-GCC eher halbherzig
implementiert, oder genauer gesagt ist es nur ein Abfallprodukt
dessen, dass GCC's wesentliche Zielplattformen (i386 und amd64 alias
x86_64) DWARF-2 unterstützen und mittlerweile wohl zum default gemacht
haben.  Das führt aber dazu, dass DWARF-2 innerhalb der gesamten Kette
für den AVR nicht sehr ordentlich funktioniert.  Der Assembler
schafft's gleich gar nicht, saubere DWARF-Debuginfo zu liefern wenn
man ihn mit -gdwarf2 aufruft, obwohl er das für einen i386-Prozessor
z. B. kann.  (Darunter leiden derzeit auch die AVR-Studio-Nutzer.)
Der GDB versteht das DWARF-2 für den AVR eher schlecht als recht, da
ihm das einfach noch nie jemand beigebracht hat.  Im Gegensatz dazu
ist stabs ein wohlverstandenes und -implementiertes Debugformat -- nur
dass AVR Studio es eben nicht versteht, und daher DWARF-2 nehmen muss
(oder das altertümliche AVR-COFF).

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.