Debug C und ASM

Gast #520228
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
Gast
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."
Moderator Persönliche Seite
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.
Gast
@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
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

Eine eigene Frage? Dieser Thread ist über 19 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.