Debuging zur Designzeit ?
Debuging zur Designzeit ?
Hi,
gibt es eine Möglichkeit, zur Designzeit zu Debuggen?
Ich würde gerne Break Points zu setzen um mein Coding auf Fehlern zu untersuchen?
Erstelle ich meine eigene, neue Componente mittels CREATE in meiner Form, läuft alles sauber durch. Keine Fehler. Mir ist auch klar warum.
Ziehe ich diese neue Komponente jedoch zur Designzeit auf meine Form, erhalte ich immer die Fehlermeldung das eine Abstracte Methode gerufen wurde. Da ich jedoch jedoch einige Abstracte Methoden habe, welche in Frage kommen, würde ich den Fehler gerne lokalisieren.
Da diese Meldung keine Auskunft darüber gibt, wo genau dieser Fehler aufgetreten ist, muss ich halt suchen.
Leider habe ich keine Vorstellung darüber wie ich zur Designzeit so etwas überprüfen kann.
Hat jemand eine Idee oder Tip für mich?
Gruß
Lorca
gibt es eine Möglichkeit, zur Designzeit zu Debuggen?
Ich würde gerne Break Points zu setzen um mein Coding auf Fehlern zu untersuchen?
Erstelle ich meine eigene, neue Componente mittels CREATE in meiner Form, läuft alles sauber durch. Keine Fehler. Mir ist auch klar warum.
Ziehe ich diese neue Komponente jedoch zur Designzeit auf meine Form, erhalte ich immer die Fehlermeldung das eine Abstracte Methode gerufen wurde. Da ich jedoch jedoch einige Abstracte Methoden habe, welche in Frage kommen, würde ich den Fehler gerne lokalisieren.
Da diese Meldung keine Auskunft darüber gibt, wo genau dieser Fehler aufgetreten ist, muss ich halt suchen.
Leider habe ich keine Vorstellung darüber wie ich zur Designzeit so etwas überprüfen kann.
Hat jemand eine Idee oder Tip für mich?
Gruß
Lorca
Re: Debuging zur Designzeit ?
Ich meine mich zu erinnern, dass dies bereits ein Thema war und dafür die ganze Lazarus IDE im Debugger Mode laufen muss.
Gruß, Michael
- kupferstecher
- Beiträge: 434
- Registriert: Do 17. Nov 2016, 11:52
Re: Debuging zur Designzeit ?
Zur "Designzeit" heißt ja zur Laufzeit von Lazarus. Ich hab auf die Weise noch nie eine Komponente entbugt, aber es müsste doch gehen, Lazarus aus Lazarus heraus zu kompilieren/starten und dann im zweiten Lazarus die Komponente zu debuggen.
(Six1 war schneller, aber vielleicht hilft es ja trotzdem.)
(Six1 war schneller, aber vielleicht hilft es ja trotzdem.)
Re: Debuging zur Designzeit ?
Häufig hilft, Lazarus mit dem Kommandzeilen-Parameter --debug-log=laz-debug.txt zu starten. Damit werden diverse Meldungen in die genannte Log-Datei (hier "laz-debug.log", der Name kann aber frei vergeben werden) geschrieben. Du kannst auch eigene Meldungen hier einsehen, die du mit DebugLn in den Quelltext geschrieben hast (benötigt Unit LazLogger).
Schau dir bei der funktionierenden Laufzeit-Version auch das Nachrichtenfenster an. Die Verwendung einer Klasse mit abstrakten Methoden hinterlässt dort in der Regel eine Warnung.
Schau dir bei der funktionierenden Laufzeit-Version auch das Nachrichtenfenster an. Die Verwendung einer Klasse mit abstrakten Methoden hinterlässt dort in der Regel eine Warnung.
Re: Debuging zur Designzeit ?
Bin letztens über einen Menupunkt: Ansicht-> IDE-Interna -> Debuggerausgaben gestolpert.
Ich weiss nicht genau wofür der ist (weiss das jemand?), aber da könntest du ja mal reinschauen.
Ich weiss nicht genau wofür der ist (weiss das jemand?), aber da könntest du ja mal reinschauen.
Re: Debuging zur Designzeit ?
Hi,
ganz herzlichen Dank für eure vielen Antworten und Tip's
Ich werde dann mal eins nach dem anderen ausprobieren.
Viele Grüße
Lorca
ganz herzlichen Dank für eure vielen Antworten und Tip's

Ich werde dann mal eins nach dem anderen ausprobieren.
Viele Grüße
Lorca
-
- 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: Debuging zur Designzeit ?
Da kann man die Kommunikation zwischen Lazarus und dem Debugger live verfolgen. Ich hab es bisher nicht gebraucht und sehe es eher als Hilfsmittel zur Entwicklung der Debugger-Schnittstelle.theo hat geschrieben: Fr 4. Feb 2022, 12:22 Bin letztens über einen Menupunkt: Ansicht-> IDE-Interna -> Debuggerausgaben gestolpert.
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: 608
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Debuging zur Designzeit ?
Hallo Lorca,
ergänzend zu den bereits erwähnten Möglichkeiten möchte ich noch auf Senddebug hinweisen.
https://wiki.lazarus.freepascal.org/DebugServer
SendDebug ist ein Projekt das mit Lazarus mitgeliefert wird. Es befindet sich im Lazarusorder /tools/debugserver/debugserver.lpi und muss einmal kompiliert werden. Will man es benutzen muss man dbugintf in die uses aufnehmen und das Programm starten. Im Quellcode kann man sich dann mit sendebug('irgendwas') Nachrichten senden lassen.
Man kann zwar keine Breakpoints setzen aber gerade bei der Komponentenentwicklung ist es eine einfache Methode um Fehler aufzuspüren.
Viele Grüße
Bernd
ergänzend zu den bereits erwähnten Möglichkeiten möchte ich noch auf Senddebug hinweisen.
https://wiki.lazarus.freepascal.org/DebugServer
SendDebug ist ein Projekt das mit Lazarus mitgeliefert wird. Es befindet sich im Lazarusorder /tools/debugserver/debugserver.lpi und muss einmal kompiliert werden. Will man es benutzen muss man dbugintf in die uses aufnehmen und das Programm starten. Im Quellcode kann man sich dann mit sendebug('irgendwas') Nachrichten senden lassen.
Man kann zwar keine Breakpoints setzen aber gerade bei der Komponentenentwicklung ist es eine einfache Methode um Fehler aufzuspüren.
Viele Grüße
Bernd
Re: Debuging zur Designzeit ?
Grundsätzlich hält einen auch nichts davon ab, die IDE unter GDB in der Shell zu starten.
und am Ende:
Code: Alles auswählen
gdb ./lazarus
....
(gdb) run
Code: Alles auswählen
(gdb) quit
Re: Debuging zur Designzeit ?
Wie man die IDE in der IDE debuggt, hatte ich mal hier viewtopic.php?p=120963#p120963 kurz erklärt. Ich finde diese Möglichkeit recht komfortabel und unkompliziert (wenn man das einmal gemacht hat

Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;