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 )
FPC bzw. LCL usw. units debuggen
-
- 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
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).
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
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- 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
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.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).
Re: FPC bzw. LCL usw. units debuggen
>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?
>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?
-
- 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
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:wozu braucht man für die release version compilierte units ohne debug info??
die debug info fliegt doch sowieso mit dem "strip" raus ??
make debuglrlr hat geschrieben:was ist die einfachste möglichkeit, FPC source neu zu kompilieren (mit debug info) ??
mit "make irgendwas" und das makefile ändern?
wenn ich mich recht erinnere
Re: FPC bzw. LCL usw. units debuggen
>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...)
>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...)
-
- 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
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.lrlr hat geschrieben:wozu braucht man für die release version compilierte units ohne debug info??
-Michael