www.mikrocontroller.net

Forum: Compiler & IDEs Profilen mit GDB, AVaRICE und Dragon


Autor: Thomas Kindler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Thomas Kindler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.. hört sich erstmal gut an!

Gibt es keinen fertigen Profiler, der das GDB-Protokoll spricht?

Autor: Thomas Kindler (thomask77)
Datum:

Bewertung
0 lesenswert
nicht 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

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.