Einzelnen Beitrag anzeigen

DualCoreCpu
(Gast)

n/a Beiträge
 
#12

Re: gdbserver starten, wie?

  Alt 15. Feb 2010, 00:48
Zitat von mse1:
Die Kommunikation mit gdb ist in tgdbmi aus unit lib/common/designutils/gdbutils.pas gekapselt.
Das Starten der debug-Umgebung passiert in apps/ide/main.pas, tmainfo.loadexec().
Danke für diese Auskunft! Muss ich mir zunächst ganz in Ruhe anschauen, die Quellen studieren und verstehen. So möchte ich eine Auskunft haben. So kann ich das konkrete Verzeichnis aufsuchen wo die angegebene Unit liegt und in dieser die genannte Methode suchen und den Quelltext studieren. Leider ist dort aber nur der Aufruf des GDB Interfaces implementiert. Muss also den Quelltext erst mal in Ruhe studieren. So einen Client brauche ich später.


Zitat:
gdb -ex "target remote localhost:4242" testprog
Das war das noch fehlende Teil im "Puzzle".

Ich hatte diese Zeile vorher ohne -ex Option und das target remote... Kommando nicht in Anführungszeichen gesetzt.

Jetzt kann dich den GDB mit Portunterstützung starten, wie ich ich es haben wollte. Habe mir die Kurzdoku von dem Sourceware-Link als Textdatei in mein gdb Verzeichnis kopiert, um später da nachlesen zu können.


Zitat:
Ich verstehe nicht ganz was du schlussendlich erreichen willst?
Ich will den GDB als Debugserver verwenden. Egal ob mit oder ohne gdbserver. Will einen Debugclient bauen, wie Kdbg einer ist. Kdbg läuft aber nach meinem Wissen nur unter Linux. Ich will ihn aber für Windows haben.

Wozu aber hierzu einen eigenen Debugger schreiben, wenn es doch dafür GDB gibt. Der braucht nur seine Debuginfos an meinen Client weiterleiten, wo sie passend angezeigt wird.

Werde aber in meiner mseide die Debuggereinstellungen wie im Screenshot angegeben übernehmen, falls nicht schon eingestellt, damit der GDB auch mit dieser IDE funzt.

Zitat:
gdb läuft in der Regel auf dem lokalen Rechner und kommuniziert z.B. mittels TCP/IP mit gdbserver auf dem entfernten Rechner. Falls gdb auf dem entfernten Rechener läuft, braucht es keinen gdbserver, dafür eine Terminal-Verbindung mit dem entfernten Rechner, beispielsweise SSH. Ich weiss aber nicht, ob SuseBuildService diese Möglichkeiten bietet. Ich würde mal auf der Mailingliste fragen, falls die BuildService Dokumentation darüber keine Auskunft gibt.
So zu sagen gibt es also viele Möglichkeiten, den GDB von einem entfernten Programm aus anzusteuern. Ich habe mich für die TCP/IP Variante entschieden, weil die auf allen Plattformen verfügbar ist. Und weil mit den Indy Komponenten, die es sowohl für Linux als auch für Windows und hier sowohl für Delphi als auch für Freepascal gibt, eine portable Schnittsetelle zum GDB herstellbar ist.

@sx2008:
Danke auch Dir für die ausführliche Erklärung:

Die Bedeutung der verschiedenen IP Adressen ist eine wichtige Information für mein Vorhaben!

Jetzt bin ich aber dran:
Werde nun erst mal die GDB Doku studieren und auch mit der Indy Komponente IdTCPClient rumspielen.
Dann werd ich schauen, welche Kommunikationsvariante ich auswähle.




Danke Euch nochmals für die bereitwillige, zielführende Hilfe.

.
  Mit Zitat antworten Zitat