AVRStudio soll gcc-ihex-file debuggen

Gast #237021
Lesenswert?
• ▲
▼
Ich hab da ein problem mit dem GCC (Feb2005) und AVR Studio (4.10):

Ich schreibe meinen Code gerne auf mehrere Dateien (nach
Funktionsgruppen) verteilt. Daraus folgt ein Problem:

Die Datei main.c wird noch richtig debuggt, aber sobald er in eine Fkt.
springen soll, die in einer anderen Datei liegt, startet er den Debugger
 und zeigt nur den Assemblercode an. Lustiger weise kann's auch mal
sein, dass er eine Datei öffnen will, in der aber nur wild herumspringt
ohne irgendwelchen Sinn...

Weiß jemand, woran das liegen kann?
Gast #237022
Lesenswert?
• ▲
▼
Zur Klärung.
Die Funktionen liegen entweder im selben Vwerzeichnis, eingebunden als
#include"", oder auch in einer gebundenen Lib libavrso.a, die mittels
-l an den Linker übergeben wird... Bei beiden taucht das selbe Problem
auf :(
Gast #237023
Lesenswert?
• ▲
▼
Wenn die Source-Dateien per #include eingebunden werden, dann ist das
auch kein Wunder.
Bedenke, daß die Auswertung von Headerdateien auf reiner Textebene
geschieht - ob Du main.c mit #includes übersetzt oder aber statt der
#includes deren Inhalt an die betreffende Stelle in main.c einfügst,
ist für den Compiler exakt dasselbe.

Die Objektdatei, die der Compiler erzeugt, enthält als Debughilfe nur
die Informationen über Zeilennummern, definierte Symbole etc, nicht
aber Dateinamen.
Somit sind alle von Dir verwendeten Symbole in der aus main.c erzeugten
Objektdatei definiert; anhand eines Symbolnamens kann der Debugger aber
nicht mehr


Wenn Du modular programmieren willst, dann solltest Du es "richtig"
anstellen:

Jedes Modul (*.c-Sourcefile) wird getrennt zu einer Objektdatei
übersetzt, diese werden gelinkt.
Damit Du aus einem Modul Funktionen oder Definitionen eines anderen
Modules verwenden kannst, erzeugst Du für jedes Modul eine gleichnamige
Headerdatei, in der Du die extern sichtbaren Prototypen etc.
deklarierst.

Dadurch bleibt die Zuordnung Objektdateiname-Symbol erhalten.

Wenn Du eine Library verwendest, muss diese Library bereits sämtliche
Debuginformationen enthalten; sonst weiss der Linker auch nicht mehr,
aus welchen Sourcemodulen die Library besteht.
Wenn die Library ebenfalls durch #include von Sourcefiles erzeugt
wurde, dann gilt obengesagtes.
Gast #237024
Lesenswert?
• ▲
▼
Das Problem ist zwar nicht gelöst, aber umgangen.

Wenn man anstelle des extcoffs eine dwarf-2 .elf-Datei generiert
funktioniert alles wie es soll. Nur benötigt man für dwarf-2 ein AVR
Studio 4.10 oder höher

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.