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
wenn Du im Dissassembler Fenster bist kannst du doch die Befehle schrittweise abarbeiten!??
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."
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.
@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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.