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/)
-   -   BDS2006 - FastMM - ReportMemoryLeaksOnShutdown (https://www.delphipraxis.net/72686-bds2006-fastmm-reportmemoryleaksonshutdown.html)

Alex_ITA01 5. Jul 2006 11:36


BDS2006 - FastMM - ReportMemoryLeaksOnShutdown
 
Hallo erstmal,
ich habe herausgefunden, dass mir Delphi ein Report über Speicherlecks beim Beenden der Anwendung anzeigt (ReportMemoryLeaksOnShutdown := True).
Kennst sich damit jemand aus?
Ich würde gerne näheres dazu erfahren weil dort eine Menge Adressen stehen und ich nicht weiß, wo ich anzufangen habe zu suchen :-)
Wäre nett wenn jemand dazu etwas sagt.
MFG Alex

himitsu 5. Jul 2006 11:44

Re: BDS2006 - FastMM - ReportMemoryLeaksOnShutdown
 
Hab mir das im BDS zwar auch noch nicht angesehn, aber (ich vermute mal) theoretisch sollten es die Adressen der Codestellen (Befehle) sein, welche den Speicher (welcher nicht freigegeben wurde) reserviert haben und dazu dann noch die Adresse der Speicherstellen selber.

Soweit ich das in FastMM-QuellCode erkennen konnte, kann man zusätlich noch einige ReportingTools in den FastMM integrieren, welche dann die Adressen in die Dateinamen und Zeilenummer umrechen täten.

Ralf Kaiser 5. Jul 2006 11:54

Re: BDS2006 - FastMM - ReportMemoryLeaksOnShutdown
 
Zitat:

Zitat von Alex_ITA01
Hallo erstmal,
ich habe herausgefunden, dass mir Delphi ein Report über Speicherlecks beim Beenden der Anwendung anzeigt (ReportMemoryLeaksOnShutdown := True).
Kennst sich damit jemand aus?
Ich würde gerne näheres dazu erfahren weil dort eine Menge Adressen stehen und ich nicht weiß, wo ich anzufangen habe zu suchen :-)
Wäre nett wenn jemand dazu etwas sagt.
MFG Alex

Halli Hallo,

erstell dein Programm mal mit MAP-File (detailliert, auf der seite Projektoptionen/Linker). Danach sollten in der Log von FastMM die jeweiligen Quelltextstellen zu sehen sein an denen nicht freigegebene Objekte alloziert (erzeugt) wurden. Das macht dieses Logfile schon wesentlich "lesbarer".

Hoffe es hilft,
Ralf

Alex_ITA01 5. Jul 2006 12:20

Re: BDS2006 - FastMM - ReportMemoryLeaksOnShutdown
 
ok Danke.
Das mit der MapFile werde ich mal testen.
MFG Alex

Alex_ITA01 5. Jul 2006 12:28

Re: BDS2006 - FastMM - ReportMemoryLeaksOnShutdown
 
Hallo,
eine Frage habe ich dann doch noch :-)
Wo finde ich denn diese Map-File?
MFG Alex

Alex_ITA01 5. Jul 2006 12:45

Re: BDS2006 - FastMM - ReportMemoryLeaksOnShutdown
 
Hab sie gefunden :-)
Danke schön

PS: Liegt im Projektverzeichnis :-)

MFG Alex

himitsu 5. Jul 2006 13:25

Re: BDS2006 - FastMM - ReportMemoryLeaksOnShutdown
 
Ansonsten einfach mal ein par Zeilen der Infos zeigen, falls es dennoch nicht verständlich ist ... irgendwer wird da bestimmt noch was erkennen können ^^

Alex_ITA01 5. Jul 2006 13:59

Re: BDS2006 - FastMM - ReportMemoryLeaksOnShutdown
 
Hallo,
das Problem ist, dass es sich alles um selbstgeschriebene Kompos aus unserer Firma handelt, daher kein Source möglich...
Der Report von Delphi zeigt immer nur an z.B.

51 - 63 Bytes TStringList 1x

Mein Problem ist, da "er" keine richtigen Adressen anzeigt (nur Bytes 51-63) wo ich die Fehler im Sourcen suchen soll...
MFG Alex

Bernhard Geyer 5. Jul 2006 14:34

Re: BDS2006 - FastMM - ReportMemoryLeaksOnShutdown
 
Im Report sollte auch noch ein Aufrufstack vorhanden sein wann diese Stringlist angelegt wurde. Nun mußt du suche wo diese Stringlist eigentlich freigegeben werden sollte und überprüfen ob dies auch geschieht.

Alex_ITA01 5. Jul 2006 14:54

Re: BDS2006 - FastMM - ReportMemoryLeaksOnShutdown
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Bernhard,
hier ist ein Screenshot des Reports, von einer ganz einfachen Anwendung wo nur im FormCreate eine StringListe initialisiert wird aber eben nicht freigegeben wird.
Ebenfalls habe ich in der Zip-Datei die Map-Datei angehangen die mir Delphi erstellt.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    SL : TStringList;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ReportMemoryLeaksOnShutdown := True;
  SL := TStringList.Create;
end;

end.
Vielleicht kannst du mir da weiter helfen.
MFG Alex


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