extrem merkwürdiges verhalten

Rund um die LCL und andere Komponenten
Antworten
Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

extrem merkwürdiges verhalten

Beitrag von Leberecht »

ich habe wiederholt sehr merkwürdiges verhalten an meinem programm festgestellt, das ich nicht erklären kann.
das programm hat sauber kompliiert, habe den mode "alles neu kompilieren" benutzt. dann, als ich aus der ide raus war
und die .exe manuell gestartet hatte und einige schritte ausgeführt hatte, verhielt sich das programm abnormal(er lieferte z.b. falsche sortierungen nach einer datenbankabfrage).
habe daraufhin das prog in unter der ide geladen, einen breakpoint vor einer kritischen stelle gesetzt, das prog wieder gestartet und dieselben schritte wiederholt.
alles lief normal und nachdem ich den breakpoint wieder entfernt hatte auch darüberhinaus. also ide beendet und das prog wieder solo gestartet. da lief dann alles wie es sollte.
das ist jetzt schon das zweite mal. heute wollte ich mit meinem prog einige datensätze in eine sqlite-db einfügen. er fügt die datensätze ein, aber ein feldinhalt wird nur mit NULL gefüllt, statt mit text. dieselbe prozedur wiederholt -ide geöffnet, prog unter der ide laufen lassen -alles geht -danach auch solo -ohne ide.

hat jemand zufällig schon dieselben erfahrungen gemacht und weiss zufällig, was das für ein komisches problem ist???
:?:


p.s. nutze lazarus 0.9.30 unter win7 64bit

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: extrem merkwürdiges verhalten

Beitrag von Scotty »

Wenn ich fehlerhaften Code schreibe, dann kommt es auch zu solchen schlecht nachvollziehbaren Fehlern. Es könnten Speicherzugriffe sein (new, getmem, create ohne free, dispose, freemem) oder ein Thread kommt dir in die Quere. Vielleicht hilft Heaptrace bei der Fehlersuche.

Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

Re: extrem merkwürdiges verhalten

Beitrag von Leberecht »

danke für die antwort. gibts irgentwo eine anleitung wie man heaptrace verwendet?
ich würde das mal probieren, obwohl ich eigentlich zielmlich sauber programmiere- aber man weiss ja nie was da noch zusammengreift.
hab jetzt mal ein neues projekt erstellt und alle .pas dateien des alten projektes dahin verschoben und die neue projektdatei angepasst. und siehe da:
ich habe auf einmal im projektinspektor 2 abhängigkeiten(packages) weniger und ein verweis auf eine alte .pas -datei ist ebenfalls aus der .lpi -datei verschwunden
die es schon seit monaten nicht mehr gibt. irgentwie aktualisiert er gelöschte objekte/abhängigkeiten im projekt nicht richtig, die alten bleiben einfach drin.
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)

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: extrem merkwürdiges verhalten

Beitrag von Scotty »

In neueren Versionen von Lazarus gibt es unter Projekteinstellungen > Linken eine Checkbox für den Parameter -gh. Die dritte Möglichkeit ist, die Unit einfach als eine der ersten im lpr einzubinden.

Code: Alles auswählen

program HelloWorld;
 
{$mode objfpc}
{$H+}
 
uses
  {$IFDEF UNIX}
  cthreads, cmem,
  {$ENDIF}
  heaptrc, //heaptrc after cmem!
  ...

Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

Re: extrem merkwürdiges verhalten

Beitrag von Leberecht »

habe heaptrace jetzt über die projekteinstellunge verwendet. allerdings sind die ergebnisse nach programmende merkwürdig. alle allkoierten blöcke werden auch wieder freigegeben, allerdings ist er mit der heapgrösse selbst nicht zufireden, die ist bei programmende irgentwie grösser als erwartet, es it somit mehr speicher frei als vor dem programmstart. wie kann das sein? gibt es für mich irgenteine möglichkreit rauszufinden, wo das problem liegt?

hab einen screenshot mit der heaptrace-meldung angehängt.
Dateianhänge
heaptrace.gif
heaptrace.gif (6.79 KiB) 834 mal betrachtet
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)

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: extrem merkwürdiges verhalten

Beitrag von mse »

Leberecht hat geschrieben:allerdings ist er mit der heapgrösse selbst nicht zufrieden, die ist bei programmende irgentwie grösser als erwartet,

Das ist normal, ich habe nie verstanden warum. Wichtig ist '0 unfreed memory blocks'.

Antworten