Profilen mit GDB, AVaRICE und Dragon

Gast #1032717
Lesenswert?

Hallo!

  Ich hab' hier eine Anwendung, die meinen mega168 zu fast 100% 
auslastet. An allen offensichtlichen Stellen hab' ich schon optimiert, 
trotzdem wüsste ich gerne, wo noch Hot-Spots liegen.

Dafür wäre ein Profiler toll. Am besten stochastisch, ohne den Code 
instrumentieren zu müssen.

Im Prinzip funktioniert das auch schon -- Per DebugWire/Dragon / 
AVaRICE/GDB kann ich das Programm mit "cont" starten, und mit "CTRL-C" 
anhalten.  Der Debugger gibt mir den aktuellen PC zurück, mit addr2line 
könnte ich im Sourcecode nachgucken, wo's ihn erwischt hat.

Für 'ne Sinnvolle Aussage bräuchte man z.B. ein Sample pro ms, und davon 
100000 Stück.

Wie kann ich das cont/ctrl-c automatisieren?! In der GDB-man page hab' 
ich für diese Anwendung leider nichts gefunden..
#1037127
Lesenswert?

Thomas Kindler wrote:
> .. hört sich erstmal gut an!

.. Aargh. Aber Ich bekomm's mit damit einfach nicht hin.

Das Problem ist, dass avr-gdb zum stoppen des Programms ein CTRL-C 
benötigt. Auf der Console klappt das einwandfrei -- es wird nur das 
Programm auf dem AVR gestoppt.

Wenn ich CTRL-C per expect sende, beendet sich aber der komplette GDB. 
Ich bekomm's einfach nicht hin, dass er sich unter expect genauso 
verhält, wie auf der Console.

(btw.: Ich verwende die WinAVR-Toolchain mit cygwin-expect)

Auch mit Perl's Devel::GDB(::LowLevel) passiert das gleiche, wenn man 
gdb->Interrupt() aufruft.

Mittlerweile glaub' ich an einen Bug in der  Windows-Portierung.. evtl. 
probier' ich's unter Linux mal aus.

Ansonsten werd' ich wohl ein Programm schreiben müssen, dass AVaRICE 
direkt per GDB-Remote-Protokoll ansteuert..

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren