[erledigt] Gerät für externes Debug einbinden

Für Installationen unter Linux-Systemen
Antworten
Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 990
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

[erledigt] Gerät für externes Debug einbinden

Beitrag von kralle »

Moin,

wie binde ich einen Windows-PC oder ein Android-Tablett in Lazarus ein um dort zu debuggen.
Unter Windows ein Android Handy in Delphi einbinden, das habe ich hinbekommen , aber von Linux aus ?

Gruß Heiko
Zuletzt geändert von kralle am So 28. Feb 2016, 07:14, insgesamt 1-mal geändert.
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 990
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Gerät für externes Debug einbinden

Beitrag von kralle »

Moin,
kann man unter Linux z. B. einen Windows-PC so in Lazarus einbinden, dass man ein entsprechendes Programm auf diesem PC debuggen kann?
Wie sieht es mit anderen Geräten aus z. B. Raspberry?

Gruß Heiko
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Gerät für externes Debug einbinden

Beitrag von mschnell »

Die kurze Antwort ist "nein".

Die weniger kurze Antwort ist "schwierig".

GDB kann man in zwei verschiedenen Arten remote verwenden: GDB-.Remote und SSH.

Beides wird von Lazarus nicht oder nicht cross-Platform funktionsfähig unterstützt.

-Michael

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6200
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Gerät für externes Debug einbinden

Beitrag von af0815 »

Noch längere Antwort: Wenn man es schafft aus den selben Sourcen sich den GDB für remote Debugging zu erstellen, dann hat man in Lazarus eine kleine Chance mit Hilfe einiger wissender es zum laufen zu bringen. Das Problem ist, das es vom GDB abhängt, auch damit, ob der gerade mit Lazarus gut kann. Denn der GDB wird in zwei Teilen benötigt - den Stub der auf der Maschine läuft, wo auch Lazarus läuft und mit einem Teil zusammenarbeitet der auf dem Remoterechner läuft.

Man kann sich das ganze über die Begriffe remote debugging gdb in Internet mal ansehen. GDB selbst kompilieren ist auch eine Sache für hartgesottene Naturen. Und dann noch auf zwei verschiedenen Plattformen.

Zu dem Thema gab es hier im Forum schon was, da ging es aber vom PC auf eine Arm NAS (QNAP) von mir. Ich bin dann im Endeffekt an einer Konfigurationssache beim Crosscompileren von GDB gescheitert. Ich wollte nicht auch noch autoconf und diese Sachen noch lernen und verstehen.

Edit: Der Thread war http://www.lazarusforum.de/viewtopic.php?f=4&t=6645&hilit=nas+gdb&start=30

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Gerät für externes Debug einbinden

Beitrag von mschnell »

Der Vorteil von remote-dgb ist, dass Lazarus davon nichts merkt und damit arbeitet wie lokal.

Ich finde die SSH-Methode aussichtsreicher, weil dafür nur der normale gdb auf dem Zielsystem benötigt wird und den gibt es eigentlich immer "out of the box" in guter Qualität .

Der ist allerdings viel größer als der Remote "Stub" und es funktioniert mit Lazarus vermutlich nur via TCP/IP und nicht (wie bei remote dgb) auch per Serienport. Deshalb braucht das Zielsystem viel mehr RAM. Das ist heute aber meist kein Problem.

Lazarus muss den Daten-Strom zum Zugriff auf dgb allerdings via SSH leiten. Der Code dafür ist in Lazarus vorhanden aber auskommentiert. Ich habe nicht versucht ihn zu aktivieren.



Da das alles nicht ging, habe ich folgende Methode zur Entwicklung der Software für das Zielsystem verwendet.

1) "Normale" Lazarus-Anwendung auf einem Linux PC erstellen. Dabei alle Units, die auf die LCL zugreifen (z.B. für Testanzeigen, Stimuli, ...) so in zwei Units aufteilen, dass eine alle Funktionalität und die andere alle LCL-Zugriffe beinhaltet. Für die Kommunikation dazwischen entsprechende Transfer-Objekte verwenden. Das dann ordentlich testen, falls Hardware-Signale gebraucht werden entsprechende manuell oder Zeit-gesteuerte Stimuli in die "LCL"-Units einbauen.

2) Für die "LCL-Units" funktionell stark eingeschränkte Varianten mit demselben internen Interface erzeugen, die die LCL nicht verwenden. Das ergibt dann ein Komanndozeilen-Programm

3) Das Kommandozeilen-Programm auf dem Zielsystem übersetzen und starten. (Auf dem Zielsystem braucht nur fpc, aber nicht Lazarus installiert sein.) Im Idealfall braucht man dann da nicht mehr debuggen.


Ich bin momentan (mit sehr niedriger Priorität) dabei, in Schritt 1 die Unit-Teilung zu vermeiden und den Schritt 2 zu formalisieren, indem der "NoGUI" WidgetType in Lazarus entsprechend erweitert wird (einige der "Interessanteren" zusäztlichen Features wie "TTimer", "TThread.Synchronize", TThread.Queue" und Application.QueueCallAsyncCall" funktionieren schon).

-Michael

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 990
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Gerät für externes Debug einbinden

Beitrag von kralle »

Moin,
ich danke Euch für Eure ausführlichen Antworten.
Ich betrachte das Thema erstmal als erledigt. vielleicht wird es irgendwann (bei laz 5.x oder so) mal wieder Thema.
Gruß Heiko
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Gerät für externes Debug einbinden

Beitrag von mse »

kralle hat geschrieben:kann man unter Linux z. B. einen Windows-PC so in Lazarus einbinden, dass man ein entsprechendes Programm auf diesem PC debuggen kann?
Wie sieht es mit anderen Geräten aus z. B. Raspberry?

Linux x86 -> Raspberry Pi cross compiling und debugging funktioniert mit MSEide und gdbserver ausgezeichnet, daher sollte es auch mit Lazarus machbar sein.
gdbserver gibt es AFAIK in Mingw oder Cygwin auch für Windows. Daher sollte auch Linux -> Windows funktionieren, das habe ich aber noch nicht probiert.

Antworten