Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi FastMM5 konfigurieren (https://www.delphipraxis.net/212159-fastmm5-konfigurieren.html)

Hobbycoder 27. Dez 2022 22:53

FastMM5 konfigurieren
 
Hi Leute,

ich tue mich schwer FastMM5 dazu zu bekommen, mir einen detailierten Speicherbericht auszugeben. Ich bekomme lediglich dan kleinen MemoryLeak-Report, den ich auch ohne FastMM bekommen kann.
Irgendwas mache ich falsch.

Was habe ich gemacht:
- FastMM_FullDebugMode.dll ins Ausgabeverzeichnis
- FastMM5.pas im Projektverzeichnis
- FastMM5 als erste Unit in der dpr
- ReportMemoryLeaksOnShutdown:=True in der dpr (oder muss das in die Main-Unit?)

Der MemoryLeak-Report bleibt der gleiche.

Was muss ich jetzt noch machen, damit ich detailierter Informationen bekomme? GGf. auch in eine Ausgabedatei.

jaenicke 27. Dez 2022 23:01

AW: FastMM5 konfigurieren
 
Ich nehme an, dass es die .inc Datei zur Konfiguration auch bei FastMM5 gibt. Darin muss der FullDebugMode aktiviert werden.

Hobbycoder 27. Dez 2022 23:07

AW: FastMM5 konfigurieren
 
Zitat:

Zitat von jaenicke (Beitrag 1516717)
Ich nehme an, dass es die .inc Datei zur Konfiguration auch bei FastMM5 gibt. Darin muss der FullDebugMode aktiviert werden.

Eben nicht. .inc-Datei wie in FastMM4 wird nicht mehr unterstützt.

KodeZwerg 27. Dez 2022 23:42

AW: FastMM5 konfigurieren
 
Zitat:

Zitat von Hobbycoder (Beitrag 1516716)
Was muss ich jetzt noch machen, damit ich detailierter Informationen bekomme?

Wenn ich mich nicht irre,
Delphi-Quellcode:
{$DEFINE FastMM_FullDebugMode}
als erste Zeile in der .dpr Datei.
bzw.
Delphi-Quellcode:
{$DEFINE FastMM_FullDebugModeWhenDLLAvailable}
um mit der dll zusammen zu arbeiten.
Delphi-Quellcode:
{$DEFINE FastMM_DebugLibraryStaticDependency}
um eine Abhängigkeit zur dll zu erzwingen.
Delphi-Quellcode:
{$DEFINE FastMM_EnableMemoryLeakReporting}
zum einschalten des loggins.

Hobbycoder 28. Dez 2022 00:08

AW: FastMM5 konfigurieren
 
Zitat:

Zitat von KodeZwerg (Beitrag 1516719)
Zitat:

Zitat von Hobbycoder (Beitrag 1516716)
Was muss ich jetzt noch machen, damit ich detailierter Informationen bekomme?

Wenn ich mich nicht irre,
Delphi-Quellcode:
{$DEFINE FastMM_FullDebugMode}
als erste Zeile in der .dpr Datei.
bzw.
Delphi-Quellcode:
{$DEFINE FastMM_FullDebugModeWhenDLLAvailable}
um mit der dll zusammen zu arbeiten.
Delphi-Quellcode:
{$DEFINE FastMM_DebugLibraryStaticDependency}
um eine Abhängigkeit zur dll zu erzwingen.
Delphi-Quellcode:
{$DEFINE FastMM_EnableMemoryLeakReporting}
zum einschalten des loggins.

Hab ich drin. Aber keine Änderung. Muss ReportMemoryLeaksOnShutdown:=True; drinbleiben?

Delphi-Quellcode:
program ThreadTest;

uses
  FastMM5,
  Vcl.Forms,
  ThreadTestMain in 'ThreadTestMain.pas' {frmThreadTest},
  uSettings in 'uSettings.pas',
  uRWStream in 'uRWStream.pas',
  uMonitorData in 'uMonitorData.pas',
  uETAComWebserver in 'uETAComWebserver.pas',
  uGetDataFromComSvc in 'uGetDataFromComSvc.pas',
  uETADataWebserver in 'uETADataWebserver.pas',
  uMonitorLogging in 'uMonitorLogging.pas',
  MonLogList in 'MonLogList.pas' {frmMonLogList};
{$DEFINE FastMM_FullDebugMode}
{$DEFINE FastMM_FullDebugModeWhenDLLAvailable}
{$DEFINE FastMM_DebugLibraryStaticDependency}
{$DEFINE FastMM_EnableMemoryLeakReporting}
{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TfrmThreadTest, frmThreadTest);
  Application.CreateForm(TfrmMonLogList, frmMonLogList);
  ReportMemoryLeaksOnShutdown:=True;
  Application.Run;
end.
Ich finde weder eine Logdatei, noch bekomme ich detailiertere Informationen als ohne FastMM5

KodeZwerg 28. Dez 2022 00:15

AW: FastMM5 konfigurieren
 
Zitat:

Zitat von Hobbycoder (Beitrag 1516720)
Muss ReportMemoryLeaksOnShutdown:=True;

Mit
Delphi-Quellcode:
FastMM_EnterDebugMode
austauschen.
Delphi-Quellcode:
FastMM_SetEventLogFilename
mit deinen Wunsch-datei-namen überschreiben. Aber ist schon lange her das ich es ausprobiert hatte, habe mir nur ein paar infos in einem kleinen projekt gesichert und kommentiert :oops:

KodeZwerg 28. Dez 2022 00:16

AW: FastMM5 konfigurieren
 
Zitat:

Zitat von Hobbycoder (Beitrag 1516720)
Zitat:

Zitat von KodeZwerg (Beitrag 1516719)
Zitat:

Zitat von Hobbycoder (Beitrag 1516716)
Was muss ich jetzt noch machen, damit ich detailierter Informationen bekomme?

Wenn ich mich nicht irre,
Delphi-Quellcode:
{$DEFINE FastMM_FullDebugMode}
als erste Zeile in der .dpr Datei.
bzw.
Delphi-Quellcode:
{$DEFINE FastMM_FullDebugModeWhenDLLAvailable}
um mit der dll zusammen zu arbeiten.
Delphi-Quellcode:
{$DEFINE FastMM_DebugLibraryStaticDependency}
um eine Abhängigkeit zur dll zu erzwingen.
Delphi-Quellcode:
{$DEFINE FastMM_EnableMemoryLeakReporting}
zum einschalten des loggins.

Hab ich drin. Aber keine Änderung. Muss ReportMemoryLeaksOnShutdown:=True; drinbleiben?

Delphi-Quellcode:
program ThreadTest;

uses
  FastMM5,
  Vcl.Forms,
  ThreadTestMain in 'ThreadTestMain.pas' {frmThreadTest},
  uSettings in 'uSettings.pas',
  uRWStream in 'uRWStream.pas',
  uMonitorData in 'uMonitorData.pas',
  uETAComWebserver in 'uETAComWebserver.pas',
  uGetDataFromComSvc in 'uGetDataFromComSvc.pas',
  uETADataWebserver in 'uETADataWebserver.pas',
  uMonitorLogging in 'uMonitorLogging.pas',
  MonLogList in 'MonLogList.pas' {frmMonLogList};
{$DEFINE FastMM_FullDebugMode}
{$DEFINE FastMM_FullDebugModeWhenDLLAvailable}
{$DEFINE FastMM_DebugLibraryStaticDependency}
{$DEFINE FastMM_EnableMemoryLeakReporting}
{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TfrmThreadTest, frmThreadTest);
  Application.CreateForm(TfrmMonLogList, frmMonLogList);
  ReportMemoryLeaksOnShutdown:=True;
  Application.Run;
end.
Ich finde weder eine Logdatei, noch bekomme ich detailiertere Informationen als ohne FastMM5

Die {$DEFINEs} müssen ÜBER der uses.

himitsu 28. Dez 2022 01:53

AW: FastMM5 konfigurieren
 
Egal ob vor oder nach dem USES,
innerhalb des Projekts werden DEFINEs niemals über Grenzen von Units hinweg durchgereicht.

Aber man kann es in den Projektoptionen eintragen, also von außerhalb, als Parameter des Compilers.
> Erzeugen > Delphi-Compiler > Bedingungen

jaenicke 28. Dez 2022 09:01

AW: FastMM5 konfigurieren
 
Zitat:

Zitat von Hobbycoder (Beitrag 1516718)
Eben nicht. .inc-Datei wie in FastMM4 wird nicht mehr unterstützt.

Das stimmt nicht. Ich hatte allerdings vergessen, dass man dafür FastMM_IncludeLegacyOptionsFile setzen muss. Dann wird die gleiche FastMM4Options.inc Datei geladen. Ich hatte schlicht dieses ifdef im Code deaktiviert, so dass diese Datei bei mir immer geladen wird. Deshalb hatte ich daran nicht mehr gedacht.

Hobbycoder 28. Dez 2022 13:47

AW: FastMM5 konfigurieren
 
Hab's jetzt so:
Delphi-Quellcode:
program ThreadTest;

{$DEFINE FastMM_FullDebugMode}
{$DEFINE FastMM_FullDebugModeWhenDLLAvailable}
{$DEFINE FastMM_DebugLibraryStaticDependency}
{$DEFINE FastMM_EnableMemoryLeakReporting}

uses
  FastMM5,
  Vcl.Forms,
  ThreadTestMain in 'ThreadTestMain.pas' {frmThreadTest},
  uSettings in 'uSettings.pas',
  uRWStream in 'uRWStream.pas',
  uMonitorData in 'uMonitorData.pas',
  uETAComWebserver in 'uETAComWebserver.pas',
  uGetDataFromComSvc in 'uGetDataFromComSvc.pas',
  uETADataWebserver in 'uETADataWebserver.pas',
  uMonitorLogging in 'uMonitorLogging.pas',
  MonLogList in 'MonLogList.pas' {frmMonLogList};
{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TfrmThreadTest, frmThreadTest);
  Application.CreateForm(TfrmMonLogList, frmMonLogList);
  FastMM_SetEventLogFilename('D:\Projects\ETA-Monitor\Win32\Debug\MM.log');
  FastMM_EnterDebugMode;
  Application.Run;
end.
Keine Meldung, keine Logdatei


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