Große Projekte: Komplieren verschnellern und ein Debugger Bu

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Große Projekte: Komplieren verschnellern und ein Debugger Bu

Beitrag von pluto »

Hallo,
ich habe gemerkt bei meinem Lazarus das aber eine Gewissen Größe des Projektes das Debuggen nicht mehr geht und beim beenden des Programms kommt nur eine Fehlermeldung:
Der Debugger ist in den Fehlerzustand gegangen und da kann ich nur auf OK klicken weiß da jemand was ?

und ich denke meine zweite Frage passt hier auch noch rein:

Bei meinem Paint2 Projekte habe ich immer mehr units und Klassen und jedesmal muss beim Kompilieren alles neu erstellt werden.... das dauert natürlich... wie könnte ich es verschnellen ?

ich habe schon überlegt ob ich teile in DLL's auslagere.
Da gibt es nur ein Problem: eigentlich arbeite ich ständig in jeder unit und außerdem sind es sehr viele klassen.

Ich habe gelesen das es schwierig ist klassen in DLLS auszulagern und zu nutzen.....

stimmt da ? kann mir da jemand weiter helfen ?
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

und jedesmal muss beim Kompilieren alles neu erstellt werden.... das dauert natürlich... wie könnte ich es verschnellen ?

Indem du einfach unter Projekteinstellungen > Diverses die Checkbox für 'Immer ein Build durchführen (auch, wenn nichts verändert wurde)' deaktivierst, und dann sollte es schon schneller laufen.

Was den Fehlerzustand angeht, liegt es wohl eher an kleinen Unsauberheiten, diesich ab einer gewissen Größe und zunehmender Anzahl an Komponenten einschleichen, als am Debugger. Beispielsweise, was ich bemerkt hab, sobald über SQLDb ne Datenbank angesprochen wird, kommt beim Debugger zurücksetzen auch ne AV, wenn man normal das Hauptformular schließt nicht, und so kann es ja mit anderen Dingen auch sein, weshalb plötzlich Fehlermeldungen auftauchen.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

"Immer ein Build durchführen" wenn ich das deaktiviere dann kompeliert er nur die units neu die verändert wurden, sehe ich das richtig ?

was meinst du mit "kleinen Unsauberkeiten" ?
in meinem Code oder den code vom Debugger ?
Wobei bei neu angelegten Projekten geht der Debugger !
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Richtig, er erstellt nur verändertes neu, was also völlig ausreicht und je nach Umfang wesentlich verschnellert.

Mit kleineren Unsauberkeiten meinte ich alles, sowohl selbst Programmierte, wie auch in vorgegebenen Codeteilen, oder auch nur kleinere Konflikte darin, wie beispielsweise das Zurücksetzen des Debuggers bei ner Datenbankverbindung. Und genau aus diesem Grund funktioniert der Debugger ja auch ohne diese Meldung bei neuen Projekten, weil der Umfang und somit die möglichen Fehlerquellen ja wesentlich geringer sind, und auch noch keine speziellen Komponenten oder ähnliches eingebunden sind.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich nutze aber keine "Datenbankverbindung"
zählen dazu auch Streams oder Datei sachen wie z.b. Inidateien oder der gleichen ?
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Keine Ahnung, es dinete nur als mir bekanntes Beispiel, aber ich denke, solche Fehler unter bestimmten Konstellationen lassen sich noch einige finden.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Nö, immer build durchführen compiliert nicht nur sachen die geändert wurden.

Das macht der fpc immer. er baut aus dem aktuellen code eine ID und vergleicht die mit einer ID im header der .ppu sind die beiden gleich baut er die ppu nicht neu sind sie unterscheidlich wird die ppu neu compiliert.
Das macht er immer so.
Immer Build durchführen linkt das Projekt lediglich vor jedem start neu.
Lazarus merkt sich dazu ob im Projekt irgendwas verändert wurde ist das nicht der Fall rufts den compiler gar nicht erst auf. Wenn es ihn aufruft prüft dieser alle ppus und linkt das projekt.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

achso. Wenn ich dich richtig verstanden habe werden die ppu dateien immer erzeugt auch wenn nichts verändert wurde. Und wenn was geändert wurde in irgeneiner unit wir auch nur dise unit neu kompliert und gelingt....

Sehe ich das jetzt so richtig ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Nein die ppu dateien werden nur neu erzeugt wenn du in der entsprechenden unit was geändert hast allerdings wird immer gelinkt. und indem du immer build durchführen auschaltest wird nicht neu gelinkt wenn du nix geändert hast.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich habe es mal ausgeschaltet ! mal abwarten wie es wird !
MFG
Michael Springwald

Antworten