Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Was mache ich mit der MemoryLeak Ausgabe? (https://www.delphipraxis.net/190823-mache-ich-mit-der-memoryleak-ausgabe.html)

Sherlock 11. Nov 2016 13:18

AW: Was mache ich mit der MemoryLeak Ausgabe?
 
Danke für den Tipp. Ich werde dann mal auch das Delphi-LeakCheck testen. Wie war die Kirmes? ;)

Erster Abtörner...genau wie beim FastMM4 steht nicht, was man in die Bibliothekspfade oder Suchpfade eintragen soll. Das ist...so was von Grundlage, ohne läuft gar nichts. Schade eigentlich, denn ansonsten sieht das schon viel professioneller und aufgeräumter als FastMM4 aus.

Sherlock

sh17 11. Nov 2016 13:18

AW: Was mache ich mit der MemoryLeak Ausgabe?
 
Zitat:

Zitat von Stevie (Beitrag 1353368)
Zur genaueren Analyse von Memoryleaks empfehle ich LeakCheck. Mit dem usage Graph kann man dann bei einem umfangreicheren Leak leichter das Rootobjekt identifizieren.

Ist das als Ersatz für FastMM ?

Sherlock 11. Nov 2016 13:46

AW: Was mache ich mit der MemoryLeak Ausgabe?
 
Stevie: Was muss ich einstellen, damit das wie FastMM4 eine Ausgabedatei erstellt? Im Moment ist das alles etwas sehr unübersichtlich. Nachdem ich LeakCheck in die öffentlichen Dokumente geklont habe und im Delphi die Bibliothekspfade für Win32, Win64 und OSX um diesen Pfad ergänzt habe steht jetzt in der DPR meines Projekts folgendes:
Delphi-Quellcode:
uses
  //FastMM4,
  LeakCheck,
  System.StartUpCopy,
  LeakCheck.Utils,
  FMX.Forms,

//etc.

begin
  if DebugHook <> 0 then
    System.ReportMemoryLeaksOnShutdown := True;
  Application.Initialize;
//und so weiter

end;
Ich finde in der LeakCheck.Configuration.inc keinen Schalter zum Erzeugen eines Reports, also starte ich einfach mal mein Programm spiele ein wenig damit und beende es, am Ende erscheint ein riesiger Dialog, der unübersichtlicher ist als der von FastMM4 (Scrollboxen oder Memos mit Scrollbars darf man in Dialogen verwenden, oder?). Wo mache ich LeakTest klar, daß der Dialog sinnlos ist, und bitte eine Datei geschrieben werden sollte?

Sherlock

TiGü 11. Nov 2016 13:49

AW: Was mache ich mit der MemoryLeak Ausgabe?
 
Zitat:

Zitat von Sherlock (Beitrag 1353373)
Wo mache ich LeakTest klar, daß der Dialog sinnlos ist, und bitte eine Datei geschrieben werden sollte?

Steht doch in der Beschreibung:

Zitat:

It plugs into default ReportMemoryLeaksOnShutdown
You can use ReportMemoryLeaksOnShutdown on any platforms.

The output varies across platforms:
On Windows message box containing the leaks is shown, this behavior can be changed by defining NO_MESSAGEBOX conditional in which case the output will be sent into the IDE Event log (by OutputDebugString)

Sherlock 11. Nov 2016 13:53

AW: Was mache ich mit der MemoryLeak Ausgabe?
 
Das habe ich auch gesehen, aber: Der IDE Eventlog ist nun wirklich nicht so übersichtlich wie eine simple Datei.

Edith sagt: abgesehen davon funktioniert es auch einfach nicht. Ich habe NO_MESSAGEBOX in den Projektoptionen gesetzt, und auch direkt in der DPR, ohne spürbare Änderung. Die Messagebox kommt weiterhin. Ich lass die Sache jetzt noch bis Montag köcheln, und setze mich mit frischer Geduld wieder für ein bis zwei Stündchen dran. :)

Sherlock

TiGü 11. Nov 2016 13:56

AW: Was mache ich mit der MemoryLeak Ausgabe?
 
Wenn du keine Option dafür findest: Aus dem IDE Eventlog kannst du auch den Eintrag selektieren, kopieren und in eine Datei einfügen.

Stevie 11. Nov 2016 14:37

AW: Was mache ich mit der MemoryLeak Ausgabe?
 
Zitat:

Zitat von sh17 (Beitrag 1353370)
Zitat:

Zitat von Stevie (Beitrag 1353368)
Zur genaueren Analyse von Memoryleaks empfehle ich LeakCheck. Mit dem usage Graph kann man dann bei einem umfangreicheren Leak leichter das Rootobjekt identifizieren.

Ist das als Ersatz für FastMM ?

Nein, LeakCheck ist einzig fürs MemoryLeak finden geschrieben und keinesfalls als sonstiger Ersatz für FastMM.

Sherlock 14. Nov 2016 14:49

AW: Was mache ich mit der MemoryLeak Ausgabe?
 
Sodele, hab mich das Wochenende über entspannt, und nach weiterem kurzem und erfolglosem Kampf mich gegen LeakCheck entschieden. Also wieder zu FastMM4. Die drei MemoryLeaks, die ich selbst verschuldet habe, sind ausgemerzt. Jetzt bleiben "nur" noch runde 240 Leaks. Problematisch bei denen ist folgendes:

Zitat:

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

This block was allocated by thread 0x1E5C, and the stack trace (return addresses) at the time was:
407405 [System.pas][System][@ReallocMem$qqrrpvi][4806]
40CC0F [System.pas][System][DynArraySetLength$qqrrpvpvipi][34250]
40CD52 [System.pas][System][@DynArraySetLength$qqrv][34348]
40F0CC [System.pas][System][TInstBucket.AddInstItem$qqrip16System.TInstItem][36911]
407362 [System.pas][System][AllocMem$qqri][4557]
408DD2 [System.pas][System][TMonitor.Create$qqrv][18091]
40F567 [System.pas][System][TInstHashMap.RegisterWeakRef$qqrpvt1][37124]
40F857 [System.pas][System][RegisterWeakRef$qqrpvxp14System.TObject][37215]
40F8FA [System.pas][System][@IntfWeakCopy$qqrr44System.%DelphiInterface$17Syst em.IInterface%44System.%DelphiInterface$17System.I Interface%][37314]
82079F [FMX.Controls.pas][FMX.ListBox][Controls.%TContentInflater__1$p24Fmx.Listbox.TList BoxItem%.$bctr$qqrx91System.%DelphiInterface$64Fmx .Controls.%IInflatableContent__1$p24Fmx.Listbox.TL istBoxItem%%][8558]
814666 [FMX.ListBox.pas][FMX.ListBox][Listbox.TCustomListBox.$bctr$qqrp25System.Classes. TComponent][1680]

The block is currently used for an object of class: Unknown
Weder sehe ich, welche "meiner" Units daß verbockt hat, noch kann ich überhaupt erkennen, um welche Klasse es hier geht.

Sherlock

Der schöne Günther 14. Nov 2016 15:11

AW: Was mache ich mit der MemoryLeak Ausgabe?
 
Zitat:

Zitat von Sherlock (Beitrag 1353598)
40F567 [System.pas][System][TInstHashMap.RegisterWeakRef$qqrpvt1][37124]

Ganz dumme Frage: 10 Seattle oder 10.1 Berlin? 10 Seattle hatte auf Windows doch noch keine schwachen Referenzen, das wird dann wohl einfach ein Leak in der RTL/FMX/VCL sein (oder?).

Sherlock 14. Nov 2016 15:16

AW: Was mache ich mit der MemoryLeak Ausgabe?
 
Berlin mit Update 1... und es ist FMX. *Seufz*

Ich werde mal schauen, ob die Leaks mehr werden oder ob die Zahl konstant bleibt. Das bekomme ich nach starten, einmal alles klicken und schließen:
Zitat:

This application has leaked memory. The small block leaks are (excluding expected leaks registered by pointer):

37 - 52 bytes: Unknown x 22
53 - 68 bytes: Unknown x 209
245 - 276 bytes: Unknown x 11
Alle Details dazu sehen bis auf Adressen und ähnlichen "Kleinkram" nahezu identisch aus... Der Löwenanteil macht aber ein Leak im Zusammenhang mit Listboxen aus, und die, also ausgerechnet die, verwende ich nur statisch. Da ist nix zu Laufzeit hinzugefügtes bei :(

Sherlock


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:09 Uhr.
Seite 2 von 4     12 34      

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