AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

gdbserver starten, wie?

Ein Thema von DualCoreCpu · begonnen am 14. Feb 2010 · letzter Beitrag vom 15. Feb 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#11

Re: gdbserver starten, wie?

  Alt 14. Feb 2010, 12:53
Ob man einen Webserver betreiben möchte oder den gdbserver oder einen sonstigen Server; bei TCP/IP gibt es im Prinzip drei mögliche IP-Adressen, auf denen der Server lauschen kann:
1.) localhost
Wenn ein Server auf localhost (127.0.0.1) lauscht, dann kann man ihn nur über das Loopback-Interface erreichen.
Loopback-Interface bedeutet, es findet kein Datenverkehr über eine Netzwerkkarte statt, sondern die Verbindung läuft intern über Winsock.
Das bedeutet auch, dass der Server nicht von einem anderen Rechner erreichbar ist.
Über das Loopback-Interface können je nach CPU-Power Übertragungsgeschwindigkeiten jenseits von 10 GBit/s erreicht werden.
2.) die eigene IP-Adresse
Lauscht der Server auf der eigenen IP-Adresse, dann kann er über die Netzwerkarte erreicht werden.
Allerdings kann ein Client, der auf dem gleichen Rechner wie der Server liegt nicht das Loopback-Interface verwenden.
Das schränkt die Datenrate unnötigerweise ein.
Ausserdem kann sich der Client nicht mit Localhost verbinden, sondern er muss ebenfalls die eigene IP-Adresse angeben.
3.) 0.0.0.0
Bindet ein Server an die IP-Adresse 0.0.0.0 kann er Verbindungen sowohl über die Netzwerkart(en) als auch über das interne Loopback-Interface annehmen.
Ist der Rechner in mehreren lokalen Netzen zuhause; hat also mehrere IP-Adressen, dann reagiert der Server auf jede dieser IP-Adressen.
  Mit Zitat antworten Zitat
DualCoreCpu
(Gast)

n/a Beiträge
 
#12

Re: gdbserver starten, wie?

  Alt 14. Feb 2010, 23: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
mse1

Registriert seit: 21. Nov 2007
115 Beiträge
 
#13

Re: gdbserver starten, wie?

  Alt 15. Feb 2010, 06:51
Zitat von DualCoreCpu:
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.
Dafür gibt es doch MSEide und Lazarus? Die machen genau das: ein Plattform-unabhängiges graphisches Interface zu gdb...
Zitat von DualCoreCpu:
Werde aber in meiner mseide die Debuggereinstellungen wie im Screenshot angegeben übernehmen, falls nicht schon eingestellt, damit der GDB auch mit dieser IDE funzt.
Diese Einstellung braucht es nur für remote debugging. MSEide und auch Lazarus arbeiten normalerweise mit gdb ohne gdbserver.
Martin Schreiber
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz