Development:GDB Remote einrichten
Development
- Allgemein
- Neutrino-HD-Entwicklung
- dbox2 Entwicklung
Inhaltsverzeichnis
Build Konfiguration
cdk/configure damit alle Debugsymbole vorhanden sind
--enable-debug make yadd-neutrino gdb gdb-remote
Modifikation der Startscripte
In cdkroot/etc/init.d/start_neutrino vor die Zeile Code:
until neutrino -f -u ; do
folgendes einfügen: Code:
exit 0
Anwenden
weil wir Neutrino manuell starten werden. Yadd booten.
Per Telnet auf die Dbox einloggen, dann: Code:
gdbserver :5555 neutrino
gdb wartet dann auf den connect eines clients: Zitat:
Process neutrino created; pid = 189 Listening on port 5555
Auf dem Client ins Verzeichnis
$prefix/cdk/bin
wechseln und Code:
./powerpc-tuxbox-linux-gnu-gdb ../../cdkroot/bin/neutrino
Dann geht es los: Code:
target remote dboxIP:5555 continue
Wenn Neutrino abgestürzt ist, kann, wie gehabt, mit Code:
bt full
ein backtrace erzeugt werden.
Weblinks
http://forum.tuxbox.org/forum/viewtopic.php?p=366575#p366575
GDB und Coolstream Boxen
Auch für die ARM basierten Boxen von Coolstream ist es möglich, dank dem Buildsystem von Seife, mit dem GDB zu arbeiten. Um den GDB nutzen zu können muss dieser mit den Targets gdb
und gdb-remote
erstellt werden. Dabei wird für die ARM Plattform der GDB einmal für die lokale Nutzung (also auf den Coolstreamboxen direkt) und einmal für die Benutzung von Remote aus gebaut. Die dabei entstehenden Pakete gdb*-[VER].opkg
in den /tmp
Ordner der Box kopieren und per opkg-cl install gdb-[VER].opkg gdb-remote-[VER].opkg
dort installieren.
Es wird noch ein dritter GDB gebaut. Dieser bleibt auf dem PC und wird unter host/bin/
abgelegt.
GDB Remote benutzen
Damit der GDB Remote gesteuert werden kann muss eine funktionierende Netzwerkverbindung zur STB aufgebaut sein!
Auf der Setopbox wird der gdbserver
gestartet. Dieser benötigt als Option die Angabe wohin die Meldungen gegeben werden sollen und das Programm was beobachtet werden soll. Dabei kann das Programm sich an eine PID "anheften". Will man also das neutrino
Binary debuggen kann man folgenden Aufruf benutzen.
~ # gdbserver --attach :5555 $(pidof neutrino) Attached; pid = 465 Listening on port 5555
Dies bedeutet nun folgendes, der gdbserver soll sich an eine PID anhängen (--attach
), die Ausgabe soll ins Netzwerk auf Port 5555 erfolgen, dabei sind alle eingehenden IPs zugelassen. Will man hier den Bereich eingrenzen so setzt man die IP vor die Portangabe. Und der letzte Parameter ermittelt die PID ($(pidof neutrino)
) von Neutrino, damit der GDB sich einklinken kann. Im Beispiel die PID 465.
Statt einer IP und eines Ports kann man auch ein anderes Charakterdevice angeben, z.B. einen weitere serielle Schnittstelle die mit einem USB2COM Adapter erstellt ist. Sieht dann so aus.
~ # gdbserver --attach /dev/ttyUSB0 $(pidof neutrino) Attached; pid = 482 Listening on port 5555
Mit dem Absetzen einer dieser Befehle sind keine weiteren Eingaben auf der STB nötig (und auch möglich).