Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   MemCheck probleme (https://www.delphipraxis.net/66632-memcheck-probleme.html)

delphinia 1. Apr 2006 18:45


MemCheck probleme
 
Habe wollte mein Programm auf Speicherprobleme prüfen und lud mir MemCheck runter und fügte es wie angegeben ein

die PAS als erstes in der DPR und direkt nach dem Begin MemChk;

Nun mein Programm brauch ewig zumstarten und bricht dann mit einer Meldung StackÜberlauf ab... das Programm startet erst gar nicht...

Was läuft hier falsch?!

omata 1. Apr 2006 19:39

Re: MemCheck probleme
 
Schau dir mal MemProof an. (finde ich persönlich wesentlich unproblematischer)

MfG
Thorsten

delphinia 1. Apr 2006 23:02

Re: MemCheck probleme
 
OK habe MemProf mal angeschaut aber bin ja absolut neu auf diesem Gebiet un weis nicht was mir dies e Daten sagen!

Code:
Errors              Error                     264       264           0           0
Pointers            Live Pointer            16951     16967     1329044     1336045
Memory              Virtual Memory             86        87     1413120     1429504
Memory              Heap Memory               127       135       31747       33643
Memory              Global Heap                 9        11      540672      622592
Memory              Local Heap                 40        49       13064       22912
COM                 CoInitialize                1         1           0           0
OLE                 SysString                   1         5           2        1048
GDI                 Pen                         2         4           0           0
GDI                 Bitmap                     39        43           0           0
GDI                 Brush                       7        10           0           0
GDI                 Font                       21        21           0           0
GDI                 Palette                     4         4           0           0
GDI                 Region                      0         6           0           0
GDI                 DC                          0         5           0           0
User                Window                     60        60           0           0
User                Icon                        7         7           0           0
User                Cursor                      7         7           0           0
User                Timer                       0         1           0           0
User                Window DC                   0         2           0           0
Kernel              File                        0         1           0           0
Kernel              Thread                     10        10           0           0
Kernel              File Mapping                1         4           0           0
Kernel              File Mapping View           1         4           0           0
Kernel              Mutex                       1         2           0           0
Kernel              Event                      18        18           0           0
Kernel              Critical Section          968       970           0           0
Kernel              Critical Section Enter        0        10           0           0
Kernel              Find First                  0         1           0           0
Registry            Registry                   21        22           0           0

omata 1. Apr 2006 23:24

Re: MemCheck probleme
 
Hallo delphinia,

diese Liste zeigt dir an, was dein Programm so alles verwendet. Wichtig ist dabei nur, dass nach dem Beenden deines Programms die Spalte Recource Count, Current# nur noch Nullen enthält.

Wenn dies nicht der Fall sein sollte, dann zeigt dir MemProof über Recource Details die Quellcodezeile(n) in deinem Programm, in der der Fehler auftritt bzw. durch die der Fehler ausgelöst wurde. Dieses Anzeige geht nur, wenn man MemProof die Verzeichnisse zu den Quellcodedateien gibt und wenn man in den Linkereinstellungen das TD32-Debug-Info eingeschaltet hat (und auch wirklich alles neu kompiliert hat).

Es ist sinnvoll MemProof als Tool einzurichten. Dann ist der Aufruf und die Bekanntgabe der Verzeichnisse nur ein Mausklick. Siehe hier

MfG
Thorsten

delphinia 1. Apr 2006 23:29

Re: MemCheck probleme
 
Ok danke erstmal soweit.. der Grudn warum ich das überhaupt mache ist der, das ich nun mein Programm vergessen ahbe auszumachen und die Nachüber laufen gelassen habe, ohne das ich wirklcih was gemacht habe darann.
Und plötzlich 40 MB im Ram belegte - beim Startmal gerade 7 MB.

Und auch wenn ich eine TForm aufrufe und wider schliesse udn wieder öffne udn wieder schliesse etc.. sich das Programm mit dem RAM den Bauch vollschlägt ;).

Ich dachte immer Form auf mehr Ram - Form wider zu - dahin zurück wo er vorher stand...

Bernhard Geyer 2. Apr 2006 10:23

Re: MemCheck probleme
 
Zitat:

Zitat von delphinia
Habe wollte mein Programm auf Speicherprobleme prüfen und lud mir MemCheck runter und fügte es wie angegeben ein

die PAS als erstes in der DPR und direkt nach dem Begin MemChk;

Nun mein Programm brauch ewig zumstarten und bricht dann mit einer Meldung StackÜberlauf ab... das Programm startet erst gar nicht...

MemCheck darf nicht mit Compiler-Optimierung laufen. Steht glaube ich auch irgendwo beschrieben.
Selbst verwende ich seit einiger Zeit FastMM. Dieser bietet ziemlich das gleiche wie MemCheck + einen besseren Memory-Manager.

SWE 19. Apr 2006 14:57

Re: MemCheck probleme
 
Ich verwende MemCheck unter Delphi 2005 und es funktioniert einwanfrei, wenn unter den

Projektoptionen / Compiler / "Optimierung" AUSgeschaltet ist
Projektoptionen / Compiler / "StackFrame" EINgeschaltet ist
Projektoptionen / Linker / "Mit TD-32-Debug-Info" EINgeschaltet ist

Dann zeigt MemCheck sogar die Zeilennummer an, wo evtl. ein Problem besteht. Allerdings wird die Exe dadurch riesengroß. Also nicht vergessen, die Optionen wieder zurückzunehmen.
Hat bei mir schon so manches Problem gefunden.

SWE 19. Apr 2006 15:03

Re: MemCheck probleme
 
Wie "öffnest" Du denn die Form. Wird sie neu erzeugt oder einfach nur neu eingeblendet? Wenn Du eine Form schließt wird sie standardmäßig nur "versteckt" und der Speicher nicht wieder freigegeben.
Im Ereignis OnClose der Form kannst Du eine Action setzen, die anweist das Formular zu zerstören.

markusj 19. Apr 2006 15:35

Re: MemCheck probleme
 
Also ich bin mit MemProof überhaupt nicht zurecht gekommen, während MemCheck mir schon bei einigen Leaks geholfen hat.
Allerdings kann MemCheck am Anfang etwas verwirrend sein, wenn er Speicherlecks an Stellen anzeigt, an denen sie eigentlich nicht auftreten können, mit der Zeit stellt man dann fest, dass es bemängelt, dass die markierte Instanz überschrieben wurde ...
Das praktische ist, dass MemCheck eine Exception generiert, die dafür sorgt, dass der Debugger beim beenden des Programmes automatisch die richtige Zeile markiert.
Und die Logfiles sind auch gut lesbar.

mfG

Markus

3_of_8 15. Aug 2007 18:26

Re: MemCheck probleme
 
Ich habe das gleiche Problem: Ich führe MemChk ganz am Anfang des Projektes aus und nach einiger Zeit (irgendwo zwischen Application.CreateForm und TForm1.OnCreate) schmiert mir alles mit einem Stack Overflow ab. Ich habe alle Optionen so, wie es im Tutorial beschrieben ist.

Wie bringe ich das jetzt zum laufen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:29 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz