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

Für Installationen unter Linux-Systemen

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

Beitragvon kralle » 15. Jan 2016, 07:51 [erledigt] Gerät für externes Debug einbinden

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 28. Feb 2016, 07:14, insgesamt 1-mal geändert.
Linux Mint 19 und Lazarus 1.8.4 (FPC-Version: 3.0.4)
Windows 8.1 Pro Lazarus 1.8.2 + Delphi XE7SP1
kralle
 
Beiträge: 515
Registriert: 17. Mär 2010, 14:50
Wohnort: Bremerhaven
OS, Lazarus, FPC: Linux Mint 18.3 - Lazarus 1.9 - FPC 3.0.4 -Win8.1 & XE7Pro | 
CPU-Target: 64Bit
Nach oben

Beitragvon kralle » 25. Feb 2016, 18:47 Re: Gerät für externes Debug einbinden

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
Linux Mint 19 und Lazarus 1.8.4 (FPC-Version: 3.0.4)
Windows 8.1 Pro Lazarus 1.8.2 + Delphi XE7SP1
kralle
 
Beiträge: 515
Registriert: 17. Mär 2010, 14:50
Wohnort: Bremerhaven
OS, Lazarus, FPC: Linux Mint 18.3 - Lazarus 1.9 - FPC 3.0.4 -Win8.1 & XE7Pro | 
CPU-Target: 64Bit
Nach oben

Beitragvon mschnell » 26. Feb 2016, 17:58 Re: Gerät für externes Debug einbinden

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
mschnell
 
Beiträge: 3215
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon af0815 » 26. Feb 2016, 18:43 Re: Gerät für externes Debug einbinden

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).
af0815
 
Beiträge: 3388
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7/Linux (L stable FPC stable) per fpcup | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon mschnell » 27. Feb 2016, 10:45 Re: Gerät für externes Debug einbinden

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
mschnell
 
Beiträge: 3215
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon kralle » 28. Feb 2016, 07:12 Re: Gerät für externes Debug einbinden

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
Linux Mint 19 und Lazarus 1.8.4 (FPC-Version: 3.0.4)
Windows 8.1 Pro Lazarus 1.8.2 + Delphi XE7SP1
kralle
 
Beiträge: 515
Registriert: 17. Mär 2010, 14:50
Wohnort: Bremerhaven
OS, Lazarus, FPC: Linux Mint 18.3 - Lazarus 1.9 - FPC 3.0.4 -Win8.1 & XE7Pro | 
CPU-Target: 64Bit
Nach oben

Beitragvon mse » 28. Feb 2016, 07:43 Re: Gerät für externes Debug einbinden

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.
mse
 
Beiträge: 1933
Registriert: 16. Okt 2008, 09: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
Nach oben

• Themenende •

Zurück zu Linux



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron
porpoises-institution
accuracy-worried