Debuging zur Designzeit ?

Rund um die LCL und andere Komponenten
Antworten
Lorca
Beiträge: 196
Registriert: Di 3. Nov 2020, 12:25

Debuging zur Designzeit ?

Beitrag von Lorca »

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

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: Debuging zur Designzeit ?

Beitrag von six1 »

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

Benutzeravatar
kupferstecher
Beiträge: 418
Registriert: Do 17. Nov 2016, 11:52

Re: Debuging zur Designzeit ?

Beitrag von kupferstecher »

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.)

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Debuging zur Designzeit ?

Beitrag von wp_xyz »

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.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Debuging zur Designzeit ?

Beitrag von theo »

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.

Lorca
Beiträge: 196
Registriert: Di 3. Nov 2020, 12:25

Re: Debuging zur Designzeit ?

Beitrag von Lorca »

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

Socke
Lazarusforum e. V.
Beiträge: 3158
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 ?

Beitrag von Socke »

theo hat geschrieben:
Fr 4. Feb 2022, 12:22
Bin letztens über einen Menupunkt: Ansicht-> IDE-Interna -> Debuggerausgaben gestolpert.
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.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

wennerer
Beiträge: 507
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 ?

Beitrag von wennerer »

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

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Debuging zur Designzeit ?

Beitrag von theo »

Grundsätzlich hält einen auch nichts davon ab, die IDE unter GDB in der Shell zu starten.

Code: Alles auswählen

gdb ./lazarus
....
(gdb) run
und am Ende:

Code: Alles auswählen

(gdb) quit

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Debuging zur Designzeit ?

Beitrag von Michl »

Lorca hat geschrieben:
Fr 4. Feb 2022, 10:51
gibt es eine Möglichkeit, zur Designzeit zu Debuggen?
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 :wink: ).

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Antworten