![]() |
AW: Memoryleak woher?
Zitat:
...:cat:... |
AW: Memoryleak woher?
Zitat:
|
AW: Memoryleak woher?
Ich hänge mich mal kurz an das Thema mit folgender Frage ran:
Ich entwickele zur Zeit eine Anwendung, die mehrere ebenfalls selbst programmierte DLLs einbindet und nutzt. Alle DLLs (13 an der Zahl) und die Anwendung selbst sind in der gleichen Projektgruppe. Mir geht es jetzt hauptsächlich darum, wie ich evtl. vorhandene MemoryLeaks in einer DLL finden kann. Manchmal kommt es mir nämlich so vor, als ob Delphi mir die nicht wirklich anzeigt. Wie muss ich genau vorgehen, um auch MemoryLeaks innerhalb einer DLL angezeigt zu bekommen? Muss ich die DLL selbst debuggen und als Host Anwendung meine Hauptanwendung angeben? Oder reicht es, einfach die Anwendung zu starten und dann die DLL Funktionen zu nutzen? In die DLL kann ich ja auch schrittweise reindebuggen wenn ich nur die Anwendung starte. Deshalb wundert es mich ein wenig. Wäre super, wenn mir jemand darauf (auch in einem gekaperten Thread [aber mich gleichem Thema]) jemand eine Antwort geben könnte wie ich da genau vorgehen muss. :-D |
AW: Memoryleak woher?
Danke erst mal für die Tips!
Das mit dem FastMM4 werde ich jetzt in Angriff nehmen und Ergebnisse vermelden... Ciao Stefan |
AW: Memoryleak woher?
Zitat:
...:cat:... |
AW: Memoryleak woher?
Liste der Anhänge anzeigen (Anzahl: 1)
Nach Eurer Beschreibung habe ich jetzt mal FastMM4 dazugehängt (Version 4991 von Sourceforge).
Nach Programmende bekommt ich folgende Meldung siehe Anhang. Irgendwas mach ich aber noch falsch! Ciao Stefan edit: In der DLL-dpr-Datei habe ich jetzt die beiden defines ergänzt:
Delphi-Quellcode:
und nun gibt es am Programmende gar keine Meldung mehr!
{$DEFINE FullDebugMode}
{$DEFINE LogMemoryLeakDetailToFile} Ist damit das Leak verschwunden? |
AW: Memoryleak woher?
Ich komme mit den Options nie so recht klar. Ich hab einfach in der dpr folgendes stehen (ausser dem uses FastMM4 an erster Stelle natürlich):
Delphi-Quellcode:
Sherlock
System.ReportMemoryLeaksOnShutdown := True;
SetMMLogFileName(PAnsiChar('C:\temp\Leaks.txt')); |
AW: Memoryleak woher?
Deine zweite Zeile ergibt bei mir
"[dcc32 Fehler] testdll.dpr(30): E2003 Undeklarierter Bezeichner: 'SetMMLogFileName'" Ciao Stefan |
AW: Memoryleak woher?
System.ReportMemoryLeaksOnShutdown ist ausschließlich für den eingebauten FastMM
Die Options.inc und Funktionen ala SetMMLogFileName sind für den externen FastMM. Der muß natürlich auch als erste Unit in der DPR eingebunden sein. [edit] wenn du SetMMLogFileName aufrufen willst, dann mußt du auch die entsprechende Unit ins Uses aufnehmen. System.pas und SysInit.pas werden dagegen immer automatisch eingebunden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz