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
extrem merkwürdiges verhalten
-
- 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
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.
-
- 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
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.
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)
(Yoda zu Dooku)
-
- 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
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!
...
-
- 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
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.
hab einen screenshot mit der heaptrace-meldung angehängt.
- Dateianhänge
-
- heaptrace.gif (6.79 KiB) 834 mal betrachtet
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)
(Yoda zu Dooku)
-
- 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
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'.