AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Speicherlecks finden

Ein Thema von glkgereon · begonnen am 23. Sep 2005 · letzter Beitrag vom 8. Dez 2005
Antwort Antwort
Seite 2 von 3     12 3      
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Speicherlecks finden

  Alt 23. Sep 2005, 22:34
Ich kann MemProof sehr empfehlen, das Programm zeigt dir sogar die Programmzeile, die das Speicherleck erzeugt.

MfG
Thorsten
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Speicherlecks finden

  Alt 23. Sep 2005, 22:40
Moin Gereon,

Du solltest bei den Optionen vor allem auch die Debug-Informationen einschalten, das scheint bei Dir nämlich nicht der Fall zu sein:

Code:
call stack - 0 : ([b]no debug info[/b]) Find error: 0012EFC8
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.059 Beiträge
 
Delphi 12 Athens
 
#13

Re: Speicherlecks finden

  Alt 24. Sep 2005, 12:17
Ja, tut mir leid ... ist mir dann auch noch eingefallen ... dat muß FastMM heißen (Fast Memory Manager) ... weiß auch nicht, was mich da geritten hatte und meines versteckt sich hier in der DP unter dem Namen FastXMM -.-''



Hier ist auf jeden Fall eine Version mit MemoryCheck (ist zwar nicht die aller neuste Version, aber es sollte ausreichen).

Einfach die FastXMM.pas als erste Unit in deiner DPR eintragen ... und wenn du das Programm beendest, dann kommt die Fehlermeldung ... dort dann noch auf "Ja" klicken und es erscheinen in deinem Programmverzeichnis die Dateien.
Je Speicherblock eine ... die Startadresse des Blocks stecht im Dateinamen und der Speicherinhalt versteckt sich in der Datei.

Und in der Demo, welche sich nicht in dem Verzeichnis mit der FastXMM.pas befindte, kannst du dir auch mal ein SpeicherLeck erstellen lassen und gucken, ob die das überhaupt reicht.
(in die .DAT-Dateien kannst du ja mit einem HEX-Editor, oder notfalls och mit 'nem normalem TextEditor reinschauen)




!!! Es sei aber auf ein Problem mit INDY hingewiesen (falls du etwas davon mit im Programm hast) ... in einer der Hauptdateien des INDY-Projekts wird ein Objekt erstellt, aber "absichtlich" nicht wieder freigegeben ... dort hat man also immer ein SpeicherLeck.
Im Moment hab ich einen entsprechenden Patch noch nicht integriert, der das von INDY "gewollte" SpeicherLeck nicht anzeigt.



Wobei ich zugeben muß, daß wenn MemProf wirklich die "richtige" Zeile anzeigt, daß das dann auch nicht zuverachten ist

[edit=alcaeus]"JEDI" durch "INDY" auf Wunsch von himitsu ersetzt. Mfg, alcaeus[/edit]
Angehängte Dateien
Dateityp: exe fastxmm_sfx_723.exe (530,6 KB, 51x aufgerufen)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#14

Re: Speicherlecks finden

  Alt 24. Sep 2005, 14:41
MemProof sieht ganz gut aus....

aber wo sieht man da die zeile?
das is doch nur zum analysieren von Exe's...oder?


und was heissen da die zeilen?
Bytes? O_O
dann hätte ich nen Leak von über 500 kb
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Speicherlecks finden

  Alt 24. Sep 2005, 14:59
Moin Gereon,

wie sieht es denn mit den Compilereinstellungen aus?
Normalerweise müsste Dir MemProof auf Doppelclick auf ein angezeigtes Problem die Zeile anzeigen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#16

Re: Speicherlecks finden

  Alt 24. Sep 2005, 15:10
hmm, also wenn ich memproof starte kommt erstmal ne leere liste.
wenn ich dann damit ne anwendung starte stehen in der liste die anzahl der pointer, memory, etc. drin.

wenn ich das programm wieder beende komm ich in die "Ressource Details".

aber da steht nix von zeilennummern...wie auch?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#17

Re: Speicherlecks finden

  Alt 24. Sep 2005, 16:03
Falls das nicht klar ist: MemCheck zeigt auch die Zeilen an. Es generiert dazu Exceptions, die dann auf die Zeile weisen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Speicherlecks finden

  Alt 24. Sep 2005, 16:16
Moin Gereon,

um Sebastians Aussage noch zu vervollständigen:
Das setzt dann aber auch eine entsprechende Einstellung der Compileroptionen voraus.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#19

Re: Speicherlecks finden

  Alt 24. Sep 2005, 16:22
In Memproof must du
1. Suchpfade angeben
2. mit stackframes, ohne Optimierung compilieren
3. mit debuginfo compilieren
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#20

Re: Speicherlecks finden

  Alt 24. Sep 2005, 21:27
Also bitte nicht so kompliziert!

Das geht alles ganz einfach.
Man kann MemProof direkt über die IDE starten und alles wird auf das aktuelle Projekt eingestellt.
Über Tools->Tools konfigurieren kann man über Hinzufügen ein neues Tool einrichten.
Dort dann den Pfad zu MemProof angeben und als Parameter $EXENAME $PARAMS wählen. fertig.

Wenn man nur mal kurz einen Test machen will, ohne nähere Informationen über den Quellcode zubekommen, startet man einfach.

Für mehr Informationen muss man in Projekt->Optionen->Linker->Mit TD32Debug-Info einschalten und über Projekt->Projekt erzeugen alles neucompilieren und dann wieder über Tools MemProof starten. Dann wird auch der Quellcode eingeblendet.

Einfacher geht es nun wirklich nicht.
Zusätzlich zeigt MemProof auch offene Handles an oder auch harte Fehler. Es werden die Peaks der benutzen Recourcen angezeigt. Und noch vieles mehr...
MemProof zeigt auch, welche Dlls geladen wurden
(ich weiss nicht ob das auch die anderen erwähnten Tools können)

MfG
Thorsten
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 Uhr.
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