FPC bzw. LCL usw. units debuggen

Für Fragen rund um die Ide und zum Debugger
Antworten
lrlr
Beiträge: 127
Registriert: Di 3. Nov 2009, 09:48

FPC bzw. LCL usw. units debuggen

Beitrag von lrlr »

in delphi gibt es die Einstellung "debug dcu", damit man die VCL usw. debuggen kann..

wie geht das im lazarus?, es geht (auch) um units auf FPC (z.b. Classes )

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: FPC bzw. LCL usw. units debuggen

Beitrag von Socke »

Damit du eine Unit debuggen kannst, benötigst du zwei Dinge: Debug-Informationen und den dazu gehörigen Quelltext. Den Quelltext hast du in der Regel schon installiert.
Wenn du Lazarus selbst compilierst, werden alle Units standardmäßig mit Debug-Informationen erstellt. Es sollte also kein Problem darstellen, einen Haltepunkt in deinem Programm zu setzen und von da aus auch die LCL zu debuggen.
Bei die RTL- und FCL-Units musst du nochmal selbst compilieren. Die vorgefertigten, übersetzten Dateien, die du auf der FreePascal-Webseite herunterladen kannst, enthalten keine Debug-Informationen (sonst wären die etwa 3-4 mal so groß).
Wenn du nur einzelne Units und nicht die ganze RTL debuggen willst, sollte es ausreichen nur diese eine Unit zu compilieren und in einem Verzeichnis abzulegen, der vor dem Standardverzeichnis durchsucht wird (üblicherweise zählt das Projektverzeichnis dazu).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: FPC bzw. LCL usw. units debuggen

Beitrag von Hitman »

Socke hat geschrieben:Wenn du nur einzelne Units und nicht die ganze RTL debuggen willst, sollte es ausreichen nur diese eine Unit zu compilieren und in einem Verzeichnis abzulegen, der vor dem Standardverzeichnis durchsucht wird (üblicherweise zählt das Projektverzeichnis dazu).
Nur, wenn diese Unit nicht von anderen (vorkompilierten) Units benötigt wird ... sonst stimmen die Checksums nicht und der Compiler bricht ab. Ich hab bisher keine elegantere Lösung gefunden, als RTL/FCL zweimal zu kompilieren (release und debug), und zu debug zwecken dann umzuschalten (dank compiler switches in der fpc.cfg) .... allerdings muss ich - wenn Lazarus involviert ist - dieses auch komplett neu bauen (zumindest die LCL) ... alles in allem relativ aufwändig.

lrlr
Beiträge: 127
Registriert: Di 3. Nov 2009, 09:48

Re: FPC bzw. LCL usw. units debuggen

Beitrag von lrlr »

>zu kompilieren (release und debug)
>und zu debug zwecken dann umzuschalten


wozu braucht man für die release version compilierte units ohne debug info??

die debug info fliegt doch sowieso mit dem "strip" raus ??

..

was ist die einfachste möglichkeit, FPC source neu zu kompilieren (mit debug info) ??

mit "make irgendwas" und das makefile ändern?

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: FPC bzw. LCL usw. units debuggen

Beitrag von Hitman »

lrlr hat geschrieben:wozu braucht man für die release version compilierte units ohne debug info??
die debug info fliegt doch sowieso mit dem "strip" raus ??
Zu Debug-Zwecken kompiliert man aber ohne Optimierung (-O-), zu Release hingegen schon mit -O2 oder -O3 ... und ja, das macht sich bei der RTL/FCL schon bemerkbar.
lrlr hat geschrieben:was ist die einfachste möglichkeit, FPC source neu zu kompilieren (mit debug info) ??
mit "make irgendwas" und das makefile ändern?
make debug
wenn ich mich recht erinnere

lrlr
Beiträge: 127
Registriert: Di 3. Nov 2009, 09:48

Re: FPC bzw. LCL usw. units debuggen

Beitrag von lrlr »

>Zu Debug-Zwecken kompiliert man aber ohne Optimierung (-O-), zu Release hingegen schon mit -O2 oder -O3 ... und ja, das macht sich bei der
>RTL/FCL schon bemerkbar.

mach man(n) das ?

ich mach das nicht mal im delphi.. (ausgenommen ein paar ausgewählte units, die sind dann aber auch während dem debuggen "optimiert")

also mir ist lieber ich hab nicht irgendwelche "kuriosen" probleme beim kunden, als 2% mehr Geschwindigkeit

deshalb lass ich bei debug/release möglichst alles gleich (assertions z.b. bleiben auch drinnen..)


(bei den meisten GUI Anwendungen, und das ist ja das "Zielpublikum" vom lazaraus) spiel geschwindikeit doch parktisch keine rolle.. (weil, wenn es Probleme gibt, liegt das zu 99.5% am "Design", da hat man gleich mal verbesserungen ums x-fache wenn man das verbessert, da spielen +/- ein paar % keine rolle...)

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: FPC bzw. LCL usw. units debuggen

Beitrag von mschnell »

lrlr hat geschrieben:wozu braucht man für die release version compilierte units ohne debug info??
Wenn die RTL Debug-Info hat, steppt im Single-Step Debug jeder Klassen-Funktions-Call, jede String-Operation und jede Memory-Managemet Aktion in die RTL. Das wäre sehr lästig.
-Michael

Antworten