Forum: Compiler & IDEs Debug C und ASM


von Manni (Gast)


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

von Walter (Gast)


Lesenswert?

wenn Du im Dissassembler Fenster bist kannst du doch die Befehle 
schrittweise abarbeiten!??

von Manni (Gast)


Lesenswert?

Aber eben nicht der Quellcode.

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

von Manni (Gast)


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."

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


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.

von Manni (Gast)


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

von Markus M. (adrock)


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

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.