Debugger
Debugger
Hallo,
ich habe eine Frage zum Debugger oder besser gesagt zur Liste der überwachten Ausdrücke. Ich möchte mir den Wert von "Date" anzeigen lassen, doch wenn ich mein Programm mit F7 oder F8 starte, erscheint bei Date die Meldung: "<Error: No symbol\"DATE\" in current context.>". Die gleiche Meldung erscheint bei "now" und bei "DayofWeek".
Braucht man eine besondere Unit, um diese Werte benutzen zu können? Oder warum wird da nichts angezeigt? Der Compiler allerdings bringt keine Fehlermeldung.
Ich wäre sehr dankbar, wenn mich jemand aufklären könnte.
ich habe eine Frage zum Debugger oder besser gesagt zur Liste der überwachten Ausdrücke. Ich möchte mir den Wert von "Date" anzeigen lassen, doch wenn ich mein Programm mit F7 oder F8 starte, erscheint bei Date die Meldung: "<Error: No symbol\"DATE\" in current context.>". Die gleiche Meldung erscheint bei "now" und bei "DayofWeek".
Braucht man eine besondere Unit, um diese Werte benutzen zu können? Oder warum wird da nichts angezeigt? Der Compiler allerdings bringt keine Fehlermeldung.
Ich wäre sehr dankbar, wenn mich jemand aufklären könnte.
Re: Debugger
Der Debugger gibt aber noch mehr aus, nämlich "function Now : TDateTime" und die Deklaration der Funktion.
Der Debugger kann selbst keine Funktionen auswerten. Er hat aber festgestellt, dass es sich bei "Now" um eine Funktion handelt, deren Deklaration und deren Rückgabetyp. Du kannst jetzt einfach einer eigenen Variablen vom Typ TDateTime diese Funktion zuweisen und deren Inhalt dir per Debugger ausgeben lassen z.B.:
Das ist auch der Grund, weshalb manchmal im Code einer Variablen ein Wert zugewiesen wird, obwohl der gleiche Code auch ohne diese funktioniert hätte (aufgrund der besseren Nachvollziehbarkeit per Debugger)
Zum Beispiel ist dieser Code deguggerfreundlicher:
als dieser Code:
Der Debugger kann selbst keine Funktionen auswerten. Er hat aber festgestellt, dass es sich bei "Now" um eine Funktion handelt, deren Deklaration und deren Rückgabetyp. Du kannst jetzt einfach einer eigenen Variablen vom Typ TDateTime diese Funktion zuweisen und deren Inhalt dir per Debugger ausgeben lassen z.B.:
Code: Alles auswählen
program Project1;
uses
SysUtils;
var
aDateTime: TDateTime;
begin
Writeln(Now); //Now geht nicht (Funktion)
aDateTime := Now;
Writeln(aDateTime); //aDateTime schon (Variable)
Readln;
end.
Zum Beispiel ist dieser Code deguggerfreundlicher:
Code: Alles auswählen
program Project1;
var
i: Integer;
begin
i := Random(2);
if i = 0 then
Writeln('Ja');
Readln;
end.
Code: Alles auswählen
program Project1;
begin
if Random(2) = 0 then
Writeln('Ja');
Readln;
end.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Debugger
ich weiß gar nicht, was ich sagen soll. So viel Erklärung kann man doch eigentlich nicht erwarten. Auf jeden Fall habe das jetzt sogar ich verstanden. Tausend Dank.
-
- Beiträge: 152
- Registriert: Mo 3. Feb 2014, 14:07
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Debugger
Das wäre aber mal höchste Zeit, dass das unterstützt wird. Delphi kann das seit vielen Versionen und ich benutze es ständig.Michl hat geschrieben:Der Debugger kann selbst keine Funktionen auswerten.
.
Re: Debugger
Also ich habe für meine letzte Delphi-Version fast 2000 DM bezahlt und bin sehr dankbar, dass es Lazarus gibt. Ich freue mich über jede Funktion, die mir Lazarus bietet. Es steht jedem frei, Features zu entwickeln, der er haben möchte.baumina hat geschrieben:Das wäre aber mal höchste Zeit, dass das unterstützt wird. Delphi kann das seit vielen Versionen und ich benutze es ständig.
@baumina Sag mir bitte Bescheid, wenn Du den Debugger weiterentwickelt hast.
-
- Beiträge: 152
- Registriert: Mo 3. Feb 2014, 14:07
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Debugger
Ich bewundere Leute wie dich, die all ihre Zeit und ihr Wissen ehrenamtlich anderen zur Verfügung stellen. Ein Lazarus mit allem Drum und Dran zu entwickeln ist sicher keine leichte Aufgabe. Leider reicht weder mein Wissen noch mein Geld aus dich in der Weiterentwicklung des Debuggers zu unterstützen. Du nimmst hoffentlich meine Entschuldigung an, mit dem Hinweis, dass diese Funktion im Debugger fehlt, wollte ich keineswegs deine oder die Arbeit aller anderen ehrenamtlichen Lazarus-Entwickler schmälern. Für alle die Lazarus benutzen (irgendwann werde ich das sicherlich auch tun), ist das eine tolle Alternative zu Delphi.Andromeda hat geschrieben:@baumina Sag mir bitte Bescheid, wenn Du den Debugger weiterentwickelt hast.
.
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2805
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Debugger
Wie funktioniert das? Kopiert der Debugger dann den kompletten Stand im Arbeitsspeicher um keine Seiteneffekte auftreten zu lassen?baumina hat geschrieben:Das wäre aber mal höchste Zeit, dass das unterstützt wird. Delphi kann das seit vielen Versionen und ich benutze es ständig.Michl hat geschrieben:Der Debugger kann selbst keine Funktionen auswerten.
Code: Alles auswählen
function GetNextNumber: Integer;
begin
Inc(ActualNumber);
Result := ActualNumber;
end;
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 152
- Registriert: Mo 3. Feb 2014, 14:07
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Debugger
Wie genau das funktioniert weiß ich nicht, aber in deinem Fall ist es tatsächlich so, dass durch die Anzeige von GetNextNumber im Debugger, der Wert um eins erhöht wird.m.fuchs hat geschrieben:Wie funktioniert das? Kopiert der Debugger dann den kompletten Stand im Arbeitsspeicher um keine Seiteneffekte auftreten zu lassen?
Diese Funktion würde sonst zu seltsamen Programmverhalten führen. Ich halte das Auswerten von Funktionen durch den Debugger für keine gute Idee.Code: Alles auswählen
function GetNextNumber: Integer; begin Inc(ActualNumber); Result := ActualNumber; end;
.
-
- Beiträge: 152
- Registriert: Mo 3. Feb 2014, 14:07
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Debugger
Wenn ich mir das hier http://wiki.freepascal.org/IDE_Window:_ ... Properties anschaue, dann steht da
Deswegen war ich davon ausgegangen, dass das kommen wird.Funktionsaufrufe zulassen
noch nicht unterstützt
.