Richtig debuggen..

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Richtig debuggen..

Beitrag von corpsman »

Guten Morgen,

Ich habe da mal eine Frage,...

Ich nutze ja nun auch Lazarus, und bin von Früher ( Delphi5 ) schon ein klein wenig verwöhnt.

Es geht um das Debuggen von Sourcode wie :

Code: Alles auswählen

Procedure TForm1.Button1Click(Sender: TObject);
Type
  Tarr = Array Of Integer;
  TBlub = Record
    x, y: Integer;
  End;
 
Var
  a: Array Of integer;
  b: TArr;
  c: Array[0..9] Of Integer;
  d, i: Integer;
  e: TBlub;
Begin
  e.x := 1;
  e.y := 2;
  setlength(a, 10);
  setlength(b, 10);
  For i := 0 To 9 Do Begin
    a[i] := i;
    d := a[i];
    b[i] := a[i] + i;
    d := b[i];
    c[i] := b[i] + i;
    d := c[i];
  End;
  showmessage(inttostr(c[9]) + inttostr(e.x));
End;


Weder a,b,c noch e sind "Anschaubar" es steht immer <incomplete type> dran, wenn ich mittels debugger mir die Werte anschauen will.

Gibts da nen Trick, oder mus man das immer so machen wie man hier mittels "d" sehen kann ?
--
Just try it

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Richtig debuggen..

Beitrag von Scotty »

Wenn du dereferenzierst (a^ statt a) siehst du den Inhalt - aber nur unter Windows. Unter Linux bleibt's dunkel :lol:

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Richtig debuggen..

Beitrag von corpsman »

Ich bin Linux User, Kubuntu Jaunty !!

d.h. für Linux gibts keine Lösung ?

Das kann ich mir irgendwie nicht vorstellen, ???
--
Just try it

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: Richtig debuggen..

Beitrag von Targion »

Also mir ist für Arrays keine Lösung bekannt... Hast du mal die Mailing-Listen durchsucht?

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Richtig debuggen..

Beitrag von corpsman »

Was für Mailinglisten ??
--
Just try it

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Richtig debuggen..

Beitrag von mse »

Ich vermute, dass der Compiler für lokale array type Definitionen keine korrekte debug info anlegt, mit globalen Definitionen funktioniert es. Bitte schreibe einen Bugreport wenn es nicht bereits gemeldet ist.
http://bugs.freepascal.org/my_view_page.php

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Richtig debuggen..

Beitrag von corpsman »

Also du scheinst recht zu haben, wenn man

Code: Alles auswählen

var
  f: Array Of Integer;
 
Procedure TForm1.Button1Click(Sender: TObject);
Type
  Tarr = Array Of Integer;
  TBlub = Record
    x, y: Integer;
  End;
 
Var
  a: Array Of integer;
  b: TArr;
  c: Array[0..9] Of Integer;
  d, i: Integer;
  e: TBlub;
Begin
  e.x := 1;
  e.y := 2;
  setlength(a, 10);
  setlength(b, 10);
  setlength(f, 10);
  For i := 0 To 9 Do Begin
    a[i] := i;
    d := a[i];
    b[i] := a[i] + i;
    d := b[i];
    c[i] := b[i] + i;
    d := c[i];
    f[i] := c[i] + i;
    d := f[i];
  End;
  showmessage(inttostr(c[9]) + inttostr(e.x));
End;


schreibt, kann der Debugger zumindest das 1. Element von f anzeigen, mittels

f[i]^ zeigt er mir aber nur das 1. Element an, die anderen kann ich nicht anzeigen lassen, oder mus ich da noch mal anders derefenenzieren ?

So nen Bugreport, kann man anscheinend nur schreiben, wenn man da Member ist, das bin ich nicht.
--
Just try it

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)

Re: Richtig debuggen..

Beitrag von pluto »

Bis der BUG behoben ist könntest du innerhalb der For schleife einfach per writeln die werte ausgeben lassen:
writeln(array[i].Feld);
Allerdings musst du unter Start\Start Paramenter\Start Programm aktivieren.
Das ist zwar eine unschöne Lösung geht aber. Wobei die writeln Funktion schon sehr viele Praktische sachen beinhaltet wie z.b.
writeln(boolvar,'\', intvar, '\',stringvar);
würde alles gehen, ohne [] und ohne die Variablen zu Casten.
MFG
Michael Springwald

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Richtig debuggen..

Beitrag von corpsman »

Hmm, ist zwar ein Hack, aber wenns nicht anders geht, ists immer noch besser wie nichts,

Danke.
--
Just try it

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Richtig debuggen..

Beitrag von Euklid »

Zur Zeit scheint es bezüglich des Debuggens von Arrays keine andere Lösung zu geben. Kann mir aber vorstellen, dass sich daran was ändert, sollte der FPC eines Tages mal einen eigenen Debugger bekommen.

Ich regel das ähnlich wie Pluto, manchmal mit debugln oder gar mit showmessage.

Viele Grüße, Euklid

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Richtig debuggen..

Beitrag von corpsman »

diese Antwort, ist zwar nicht was ich hören wollte.

Trotzdem danke, so kann ich mich drauf einstellen, und entsprechend handeln.
--
Just try it

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Richtig debuggen..

Beitrag von mse »

corpsman hat geschrieben:diese Antwort, ist zwar nicht was ich hören wollte.

Trotzdem danke, so kann ich mich drauf einstellen, und entsprechend handeln.

MSEide kann dynamische Arrays anzeigen, für lokale Typ-Definitionen und für manche Klassen Array-Elemente funktionierts aber auch nicht , da FPC ungenügende Debuginfo erzeugt.

Antworten