2012-11-21 4 views
9

I haben:GDB Remote-Protokoll: Wie Pakete zu analysieren?

  • Ein proprietäres Prototyps Armbrett (Cortex-M3 basiert) mit eCos OS
  • Das Brett hat der programmierte RedBoot Bootloader
  • serielle Leitung (RS-232)
  • gDB-Debugger für ARM (arm-EABI-gDB)
  • Host-Betriebssystem ist Windows/Cygwin und/oder Linux (eigentlich egal)

Problem: Der GDB-Debugger kann keine Verbindung zum Ziel über die serielle Leitung herstellen.

Was ich will: ist die Pakete des GDB Remote-Protokolls zu schnüffeln, um zu erkennen, ob der GDB-Stub auf dem Ziel lebt und in Betrieb ist.

Details: RedBoot verfügt über eine Option, das Steuerelement des Ziels an den integrierten GDB-Stub zu übergeben. Ich weiß, dass der RedBoot am Leben ist, ich kann mich damit verbinden und Befehle über die serielle Leitung senden. The RedBoot manual besagt, dass die Umschaltung auf den GDB-Stub durch Eingabe von $ oder + -Symbolen (die eigentlich die Präfixe der GDB-Remote-Protokoll-Pakete sind) erfolgen kann. Es scheint zu funktionieren, wenn ich diese Symbole sende, stirbt das Terminal. Aber ich bin mir nicht sicher, ob der RedBoot mit der GDB-Stub-Unterstützung kompiliert wurde (frag mich nicht, warum :-)).

Dann, wenn ich versuche, mit meinen GDB-Debugger an den Board verbinden ich folgendes Bild (unter Windows):

(gdb) target remote COM3 
Remote debugging using COM3 
Ignoring packet error, continuing... 
Ignoring packet error, continuing... 
Ignoring packet error, continuing... 
Ignoring packet error, continuing... 

Der Hafen ist richtig, die Baudrate auch. Eigentlich die gleiche Ausgabe bekomme ich, wenn ich versuche, dasselbe mit einem anderen seriellen Port zu tun, der mit nichts verbunden ist.

Was ich wissen will ist, ist GDB Stub irgendetwas zurück oder nicht?

Intuitiv dachte ich, dass

set verbose on 

würde wahrscheinlich helfen, aber GDB Handbuch sagt, es hat sehr begrenzte Wirkung und mein Fall ist darüber hinaus.

Kann es möglich sein, GDB Debugger mit einem Makro zu kompilieren, das Debug-Protokollierung aktiviert?

Antwort

16

Was ich wissen will ist, ist GDB Stub etwas zurücksenden oder nicht?

Tun Sie dies (vor target remote):

(gdb) set debug remote 1 
+0

Ich frage mich, wie ich dieses Kapitel übersehen könnte! Danke vielmals. – krokoziabla