IDE mit Debug-Info...?
-
- Beiträge: 289
- Registriert: Mo 24. Aug 2020, 14:16
- OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
- CPU-Target: i386
IDE mit Debug-Info...?
Bei mir klemmt es gerade nach dem Neukompilieren der IDE mit einer Komponente, an der ich gerade arbeite. Nach dem Neustart zeigt mir Lazarus eine leere MessageBox, ohne Message und ohne Button, an. Die bekomme ich zwar erstmal noch weg, aber wenn ich ein Form mit besagter Komponente (ist schon länger installiert und funktioniert in Programmen soweit auch einwandfrei) laden will, komme ich da nicht mehr raus. Also dachte ich, mal das Profil 'IDE mit Debug-Informationen' probieren, das wird mir dann ja wohl die Stelle zeigen, an der es hakt. Leider nichts dergleichen, und Breakpoints zB in den Settern haben auch nichts gebracht. Als ich dann wieder auf den letzten Stand zurückgegangen bin, ist mir aufgefallen, dass die IDE mit - angeblich - Debug-Infos um gut 35MB kleiner ist als ohne...?
- af0815
- Lazarusforum e. V.
- Beiträge: 6782
- 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: IDE mit Debug-Info...?
Das mit Debug IDE klappt nur sinnvoll, wenn man die die IDE in der IDE startet
Dann kann man in Lazarus debuggen.

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 289
- Registriert: Mo 24. Aug 2020, 14:16
- OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
- CPU-Target: i386
Re: IDE mit Debug-Info...?
Dienen dazu die Projekte lazarus.lpi und startlazarus.lpi in den LCL-Sourcen? Gibt es vielleicht auch irgendwo eine Anleitung? Gockel ist mal wieder wenig hilfreich, oder ich habe noch nicht die richtige Formulierung gefunden.
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1647
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: IDE mit Debug-Info...?
Einfach eine Kopie von Lazarus.exe im gleichen Verzeichnis erstellen und starten. Damit dann die Lazarus.lpi öffnen. Jetzt kann man Lazarus ganz normal debuggen.
-
- Beiträge: 289
- Registriert: Mo 24. Aug 2020, 14:16
- OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
- CPU-Target: i386
Re: IDE mit Debug-Info...?
In dem Verzeichnis, in dem auch die lazarus.lpi liegt? Bisschen haklig unter Linux, wo die Sourcen schreibgeschützt sind. Und muss die Version von Lazarus, die man für den Aufruf nimmt, auch die mit Debug-Infos sein? Oder nimmt man dazu eine 'normale' und aktiviert Debug-Infos in lazarus.lpi? Wozu dient dann aber die Option in Lazarus, die IDE mit Debug-Infos zu erstellen...? Ich bin gerade etwas verrwirrt...
Re: IDE mit Debug-Info...?
Haben sie versucht, Lazarus mit einem Parameter laufen zu lassen, der die Protokollierung von Debugging-Informationen aktiviert? Dies kann helfen, das Problem zu lokalisieren:
Code: Alles auswählen
./lazarus --debug-log=/home/user/lazdebug.log
Grüße / Pozdrawiam
paweld
paweld
-
- Beiträge: 289
- Registriert: Mo 24. Aug 2020, 14:16
- OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
- CPU-Target: i386
Re: IDE mit Debug-Info...?
Danke für die Erinnerung, habe ich jetzt mal gemacht. Vorher hatte ich allerdings noch einen Fehler in einem Setter meiner Komponente korrigiert und konnte danach die IDE wieder neu aufbauen und verwenden, ohne die 'leere Message' zu erhalten. Beim Aufruf des Projekts, das ich mir im Rahmen des TBufDataset-Refresh-Bugs angelegt hatte, erscheint sie allerdings wieder, wenn auch nur zweimal. Ich hänge die entsprechende Log-Datei mal an. Es gibt dreimal die Zeile:
Zusätzlich hatte ich beim Verlassen von Lazarus noch folgende Message im Terminal, die in der Log-Datei nicht auftaucht:
gefolgt von zwei Access-Violations, die auf eine Zeile in designer.pp verweisen, die sich tatsächlich auf die Verarbeitung einer LM_PAINT-Message beziehen. Das dürften die 'leeren Messages' sein. Und in der Komponente TrkSQLGrid rufe ich auch tatsächlich einmal Invalidate in einem Setter, und einmal InvalidateCol(0) in einer Methode auf, die allerdings zur Designzeit nicht aktiv sein sollte. Das sollten aber beides ohnehin keine Probleme sein...?WARNING: TGtk2WidgetSet.InvalidateRect refused invalidating during paint message: TrkSQLGrid
Zusätzlich hatte ich beim Verlassen von Lazarus noch folgende Message im Terminal, die in der Log-Datei nicht auftaucht:
EDIT - In besagtem Projekt befindet sich noch die alte Version von rkSQLGrid.pas, die aber auch nicht der IDE geladen ist, dort befindet sich nur das Original aus dem entsprechenden Package. Dennoch denke ich, dass das der Fehler war, auch wenn ich keinen Zusammenhang zwischen der Korrektur und dem Aufruf von Invalidate sehe...(lazarus:16461): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
- af0815
- Lazarusforum e. V.
- Beiträge: 6782
- 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: IDE mit Debug-Info...?
Bei mir sind die nicht schreibgeschützt, weil Lazarus lässt sich auch ohne viel Probleme direkt aus den Sourcen kompilieren und ich bin sicher vor den "Spezialitäten" der Pakete. fpc ist was anderes. Aber wenn man vor hat wirklich Lazarus zu debuggen, würde ich sowieso Lazarus nicht aus den Paketen nehmen. Man kann ja auch nicht vernünftig dann fixen.Sieben hat geschrieben: Di 5. Nov 2024, 13:20 In dem Verzeichnis, in dem auch die lazarus.lpi liegt? Bisschen haklig unter Linux, wo die Sourcen schreibgeschützt sind.
Er sagt hier ganz klar - du machst eine Operation - die nicht erlaubt ist, während einer Paint Operation. Das ist vom gedankengang schon mal klar, warum das nicht erlaubt sein kann, das wird sonst zu einer Loop. Innerhalb der Paint wird Invalidate aufgerufen, das wiederum eine Paint-Aktion auslöst, die wiederum ein Invalidate auslöst, das wiederum eine Paint-Aktion auslöst,.....WARNING: TGtk2WidgetSet.InvalidateRect refused invalidating during paint message: TrkSQLGrid
Würde ich meiner Erfahrung nach einmal nicht überbewerten. Eventuell mit einem suberen Lazarus gegenprüfen ob die Message nicht aus dem Widgetset der VCL heraus kommt. Ich kenne so Messages unter dem RasPi wenn die App ganz normal läuft.(lazarus:16461): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 289
- Registriert: Mo 24. Aug 2020, 14:16
- OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
- CPU-Target: i386
Re: IDE mit Debug-Info...?
Schon klar, dass das nicht ginge. Nur ist da eigentlich nichts innerhalb einer Paint-Operation, sondern wie gesagt innerhalb eines Setters:Er sagt hier ganz klar - du machst eine Operation - die nicht erlaubt ist, während einer Paint Operation. Das ist vom gedankengang schon mal klar, warum das nicht erlaubt sein kann, das wird sonst zu einer Loop.
Code: Alles auswählen
procedure TrkSQLGrid.SetCheckMode(AValue: Boolean);
begin
if (FCheckMode <> AValue) then
begin
if Assigned(FCheckSet) then FreeAndNil(FCheckSet);
if not (csDesigning in ComponentState)
and AValue and DataLink.Active and CheckKeyFields(FKeyFields) then
FCheckSet := TrkSQLGridMemTable.CreateTable(Self,FKeyFields,FGridDataset);
FCheckMode := AValue;
LayoutChanged;
Invalidate;
end;
end;
So, jetzt habe ich gerade noch einmal etwas damit gespielt und einmal LayoutChanged und einmal Invalidate auskommentiert, und dann sogar noch beide. Und der Fehler trat wieder auf. Dann habe ich den vorigen Zustand - der wie gesagt eben noch problemlos lief - wieder hergestellt, aber der Fehler blieb. Irgendwas ist da arg vergnaddelt... Ich glaube, ich schlaf da erstmal drüber.
Re: IDE mit Debug-Info...?
Ich weiß jetzt nicht, in welchem Status deine Komponente ist, aber du hast sie offenbar installiert, ohne sie komplett zur Laufzeit getestet zu haben. Deinstalliere sie, erzeuge ein Test-Projekt, in dem die Komponente zur Laufzeit erzeugt wird, und arbeite damit. Die meisten Fehler findest du auf diese Weise, und dabei gibt es eben keinen Absturz der IDE, sondern nur deines Test-Programms. Nur in ganz wenigen Fällen, etwa wenn du mit Property- oder Komponenteneditoren zu tun hast, oder mit IDE-Erweiterungen, ist ein Debuggen der IDE erforderlich.Sieben hat geschrieben: Di 5. Nov 2024, 20:03 Irgendwas ist da arg vergnaddelt... Ich glaube, ich schlaf da erstmal drüber.
-
- Beiträge: 289
- Registriert: Mo 24. Aug 2020, 14:16
- OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
- CPU-Target: i386
Re: IDE mit Debug-Info...?
Nein, das habe ich schon so gemacht wie du sagst. Diese Komponente ist seit zwei Jahren installiert und jetzt noch etwas erweitert worden, und alle Änderungen wurden erst mal ausgiebig zur Laufzeit getestet. Ich kann selbstverständlich auch wieder auf einen bzw mehrere frühere Zustände zurück. Zur Laufzeit ist die Komponente auch vollkommen unauffällig, da tritt kein Fehler auf, auch nicht, wenn ich den Setter betätige, egal in welcher Richtung.
-
- Beiträge: 289
- Registriert: Mo 24. Aug 2020, 14:16
- OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
- CPU-Target: i386
Re: IDE mit Debug-Info...?
Das hat mich aber eben noch auf eine Idee gebracht - ich verwende die Komponente ja auch längst 'produktiv' in anderen Projekten als nur diesem Testprojekt. Also mal eins von denen geladen - kein Fehler, nichts. Offenbar an der falschen Stelle gesucht, danke...
-
- Beiträge: 289
- Registriert: Mo 24. Aug 2020, 14:16
- OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
- CPU-Target: i386
Re: IDE mit Debug-Info...?
Ich benutz mal diesen etwas chaotischen Thread für eine weitere Frage: ich habe gerade festgestellt, dass die Abfrage
in meinen Package-Dateien ausgegrauten Code anzeigt, der auch nicht einkompiliert wird, obwohl ich hier definitiv auf Gtk2 unterwegs bin. In Projekt-Dateien tut es dagegen wie erwartet...?
Code: Alles auswählen
{$ifdef LCLGtk2}
// code
{$endif}
-
- Beiträge: 289
- Registriert: Mo 24. Aug 2020, 14:16
- OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
- CPU-Target: i386
Re: IDE mit Debug-Info...?
Ich habe die Frage jetzt auch drüben im internationalen Forum gestellt (ja, ich weiss), werde aber hier berichten wenn sich dort etwas ergibt und umgekehrt.
-
- Beiträge: 586
- Registriert: Mi 25. Mär 2009, 21:12
- OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
- CPU-Target: mostly 32 bit
Re: IDE mit Debug-Info...?
Hat das Package eine Abhängigkeit von der Package LCL? (direkt oder indirekt)?