mikrocontroller.net

Forum: Compiler & IDEs Debug C und ASM


Autor: Manni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe im AVR Studio 4 (Built 4.12) ein Projekt mit C und ASM (.s) 
files. Alles richtig compiliert und gelinkt.

Frage: wie überliste ich den Debugger, dass er nicht nur durch das C 
file debugt, sondern auch in das ASM file (.s) springt und dort die asm 
Befehle durchtackert ?

Ich habe bisher nur die Möglichkeit gefunden, das Dissassember Fensters 
zu öffnen, was aber der Sache nicht sehr dienlich ist.

Hat einer einen Tip ??

Gruß
Manni

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn Du im Dissassembler Fenster bist kannst du doch die Befehle 
schrittweise abarbeiten!??

Autor: Manni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber eben nicht der Quellcode.

Gib's da wirklich keine andere Möglichkeit ??

Autor: Manni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach ausgiebiger Suche bin ich fündig geworden:

Unter Help --> AVR Studio -> AVR GCC Project -> Using the avrgcc plugin 
-> Troubleshooting findet man unter Known Issues:

"Debugging projects with Assembly and C sourcefiles is not working. The 
GNU assembler is not capable of outputting dwarf2 debug information. 
This seems to confuse the elf/dwarf parser when stepping over or into 
assembly routines from C."

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat sich leider noch niemand gefunden, der das dem Assembler mal
beigebracht hätte.  Vermutlich ist das übrigens eher eine
,,Anfängeraufgabe'' für jemanden, der mal in die Innereien der
GNU-Tools einsteigen möchte.  Unser derzeitiger DWARF-2-Support
basiert im Wesentlichen darauf, dass er mehr zufällig funktioniert.
GCC's mainstream targets (i386, x86_64, möglicherweise auch ppc und
sparc64) sind mittlerweile von stabs auf DWARF-2 umgestiegen, und
davon profitieren wir im Falle des Compilers mit.

Beim Assembler profitieren wir davon noch insofern mit, dass der
Assembler (und der Linker) problemlos all die .debug.* sections
verarbeitet, die der Compiler in diesem Falle generiert, aber das
war's dann.  Der Assembler hat schlicht keine Ahnung, wie er selbst
die Zeilennummerninformationen (mehr gibt's bei Assemblerquellen ja
nicht an Debug-Info) bei -gdwarf2 einfügen soll.  Damit fehlen diese,
und man kann effektiv im AVR Studio keine Assemblerquellen auf
symbolischer Ebene debuggen.

Da andererseits der Assembler (aus gleichem Sourcecode gebaut) für
ein i386-Target sehr wohl mit -gdwarf2 die Zeillennummerninfo mit
generieren kann, vermute ich, dass das Problem nicht allzu schwer
zu finden sein kann, wenn sich denn mal nur jemand ernsthaft dran
setzen würde.

(Das nächste Ding ist dann der AVR-GDB, der kann das auch alles nicht
vernünftig handhaben.  Daher fährt man mit GDB nach wie vor besser,
wenn man beim AVR stabs als Debuginformation nimmt.)

Im Prinzip gibt's fürs AVR Studio noch den alten Workaround, dass
man mit COFF arbeitet.  Irgendwo schwirrt noch ein Rezept herum,
welche zwei Zeilen .stabs man den Assemblerquellen hinzufügen muss,
damit das funktioniert.  Eigentlich wäre es aber schön, wenn von
denen, denen der Schuh hier am meisten drückt, doch mal jemand in
den GNU Assembler reinschnüffeln würde.

Autor: Manni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörg:
Danke dir für die detaillierte Erläuterungen. Scheint ja wohl kein allzu 
großes Thema zu sein um das zu reparieren. Aaaber.... den Schuh zieh ich 
mir lieber nicht an, da eben "nur" Anwender und kein software profi, 
obwohl es mich schon reizen würde.

Es ist halt immer eine Frage des Standpunktes: Will ich mein 
Anwendungs-Problem lösen, oder will ich die dazu notwendigen Tool (Oszi, 
Netzwerk-Analyzer, Leiterplatten-Entwicklungs-Gerät, sowie Rechner samt 
Software) selber entwickeln / überarbeiten. Irgendwo muß man eben einen 
Cut machen, sonst landet man im Nirvana.

Trotzdem vielen Dank !!
Manni

Autor: Markus M. (adrock)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ist das Verhalten eigentlich immer noch so, oder sollte das inzwischen 
funktionieren?

Bei mir (AVR Studio 4.16, win-avr 20081205) scheint es zumindest nicht 
zu funktionieren. Der Assembler wird zwar korrekt mit der -dwarf2 Option 
aufgerufen, aber im AVR Debugger wird über das ASM Unterprogramm einfach 
'drübergesprungen.

Ciao...
Markus

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.