Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Speicherleck finden (https://www.delphipraxis.net/200195-speicherleck-finden.html)

AJ_Oldendorf 27. Mär 2019 17:15


Speicherleck finden
 
Hallo zusammen,
ich habe in meiner Anwendung irgendwo ein Speicherleck. Dies wird mir beim Beenden der Anwendung angezeigt (ReportMemoryLeaksOnShutdown). Ich kenne auch die Größe des Speicherlecks. Da meine Anwendung aber aus sehr vielen Tasks, Objekten, Formularen, etc besteht (Quelltextzeilen > 800000), weiß ich nicht genau, wo sich das Speicherleck befindet.
Da es sich um ein größeres Leck handelt, wird beim Beenden auch nur die Größe angegeben, kein Typ oder Name dazu.
Habt ihr eine Idee, wie ich in meiner Anwendung herausfinden könnte, welches Objekt, Datenrecord, Variable etc. genau dieser Größe entspricht? Dann könnte ich vielleicht dahinter kommen, wo es entsteht.
FastMM habe ich auch schon versucht, aber da steht auch nur "unknown", also komme ich so nicht weiter.
Ich dachte, über die Größe komme ich weiter. Diese ist immer gleich groß

Der schöne Günther 27. Mär 2019 17:27

AW: Speicherleck finden
 
Wenn du den "richtigen" FastMM versucht hast, dann sollte in der erstellten Datei auch der komplette Aufrufstack stehen wo dieses "Unknown" erzeugt wurde.

Hast du in der .inc-Datei den "FullDebugMode" aktiviert? Der war ja dafür notwendig, meine ich.

AJ_Oldendorf 27. Mär 2019 17:39

AW: Speicherleck finden
 
gibt es auch ein "falschen" FastMM?

Hier der Auszug, da steht keine mir bekannte Funktion:

A memory block has been leaked. The size is: 65700

This block was allocated by thread 0x9F8, and the stack trace (return addresses) at the time was:
407392
EBA677 [Unknown function at TMethodImplementationIntercept]
4D5A50 [Unknown function at TMethodImplementationIntercept]
40C422
7619EE1C [BaseThreadInitThunk]
777A37EB [Unknown function at RtlInitializeExceptionChain]
777A37BE [Unknown function at RtlInitializeExceptionChain]

The block is currently used for an object of class: Unknown

The allocation number is: 48639618

Current memory dump of 256 bytes starting at pointer address 34A27600:

TurboMagic 27. Mär 2019 17:44

AW: Speicherleck finden
 
Der richtige ist die Vollversion aus dem Internet. Ist open source. EMBT liefert nur eine Fassung mit Light Speicherleck Erkennung aus. Keine Ahnung warum, evtl. mal M. Eissig hier nach dem Grund fragen...

AJ_Oldendorf 27. Mär 2019 17:46

AW: Speicherleck finden
 
Ich kenne das Thema mit FastMM.
Natürlich habe ich die neuste Version aus dem Netz genommen, nur hilft mir das nicht wirklich weiter. Siehe Post oben

Uwe Raabe 27. Mär 2019 17:52

AW: Speicherleck finden
 
Eventuell mal LeakCheck probieren: https://bitbucket.org/shadow_cs/delphi-leakcheck. Keine Ahnung, ob das hier was bringt, aber einen Versuch sollte es wert sein.

TurboMagic 27. Mär 2019 19:17

AW: Speicherleck finden
 
Hasst du FullDebugMode benutzt?
Siehe dazu fastmm's included Datei, die
diverse Konfigurationsoptionen enthält.
Sollte dann zu einem Stacktrace führen, der die Stelle der Allokation anzeigt.

hoika 27. Mär 2019 19:45

AW: Speicherleck finden
 
Hallo,
die Linker-Optionen richtig gesetzt?

AJ_Oldendorf 27. Mär 2019 20:01

AW: Speicherleck finden
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hier die Inc-Datei.
Ja habe FullDebugMode an.
@Uwe: Danke, dass kannte ich noch nicht. Gucke ich mir mal an.
Bild von Linker und Compiler hängt auch bei

hoika 27. Mär 2019 20:05

AW: Speicherleck finden
 
Hallo,
Debug-DCU's fehlt, und die beiden Debug-Informationen anhaken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 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