Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Memproof (https://www.delphipraxis.net/29932-memproof.html)

Hansa 16. Sep 2004 23:26


Memproof
 
Hi,

hat jemand zu Memproof weitergehende Informationen ? Ich kann damit nichts rechtes anfangen. 8) Wie setzt man das am besten ein ? Oder gibts was anderes/besseres ?

Dax 17. Sep 2004 06:29

Re: Memproof
 
Was IST Memproof überhaupt?
So wie es sich anhört, scheint es eine Komponente zu sein, die Daten so speichert, dass sie nicht ausgelagert werden.
Oder eine Memory-Leak-Checking-Software?

Bernhard Geyer 17. Sep 2004 07:28

Re: Memproof
 
Memproof

Ich würde aber MemCheck nehmen. Benötig nur 2 Zeilen Code (Uses-Anweisung + Aufruf) und kann währen der Entwicklung so einfach nebenher laufen gelassen werden.

barnti 17. Sep 2004 08:08

Re: Memproof
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Bernhard,
kannst Du mal ein paar Tips geben, wie ich das tool benutze?

Ich habe die Unit in die Uses-Klausel eingebunden und im ProjektRumpf den Aufruf 'MemChk' stehen.
Die Compileroptionen: Optimization -> aus; Stackframes -> an; Pentium... an. Außerdem habe ich die
TD32debuginfo included.
Beim Start meines Programms erscheinen dann zwei Exceptions. Danach wird das Programm wieder beendet. Im Log stehen dann zwar die Fehler, ich kann aber nicht daraus schließen, wo ich suchen soll...
Kannst Du mir helfen?

shmia 17. Sep 2004 09:57

Re: Memproof
 
Zitat:

Zitat von barnti
Beim Start meines Programms erscheinen dann zwei Exceptions. Danach wird das Programm wieder beendet. Im Log stehen dann zwar die Fehler, ich kann aber nicht daraus schließen, wo ich suchen soll...

Die Log-Datei sagt, dass 2 Speicherbereiche mit einmal 100 Bytes und einmal 16 Bytes beim
Programmende nicht freigegeben wurden.
Der Speicher wurde beim Erzeugen der Exceptions reserviert.
Da die Exceptions aber zu einem unsanften Abbruch deiner Anwendung geführt haben, ist hier kein
Grund, sich um Speicherlecks Sorgen zu machen.

Du musst nun nach der Ursache der 1. Exception suchen (Welche Message ?). Die 2. Exception brauchst du überhaupt nicht zu verfolgen/beachten.

barnti 17. Sep 2004 10:07

Re: Memproof
 
Zitat:

Zitat von shmia
Die Log-Datei sagt, dass 2 Speicherbereiche mit einmal 100 Bytes und einmal 16 Bytes beim
Programmende nicht freigegeben wurden.
Der Speicher wurde beim Erzeugen der Exceptions reserviert.
Da die Exceptions aber zu einem unsanften Abbruch deiner Anwendung geführt haben, ist hier kein
Grund, sich um Speicherlecks Sorgen zu machen.

Du musst nun nach der Ursache der 1. Exception suchen (Welche Message ?). Die 2. Exception brauchst du überhaupt nicht zu verfolgen/beachten.

Die erste Exception ist nur eine allgemeine Speicherverletzung!? Ich kann aufgrund des Logs keine Schlüsse ziehen...

Bernhard Geyer 17. Sep 2004 10:07

Re: Memproof
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die Memcheck-Unit bindest Du als erste in deine Projektdatei ein und
die der Aufruf von MemChk ist der erste in deinem Projekt.

Auch solltest Du keine Optimierungseinstellungen vornehmen. Und der Pentium-Schalter ist mitlerweile m.E. sinnlos (wieviele Rechner gibt es noch mit diesem Fehlerhaften Prozessor und wie wahrscheinlich ist das Auftreten?)

Anbei meine Compileroptionen, welche funktionieren.

barnti 17. Sep 2004 10:11

Re: Memproof
 
Zitat:

Zitat von Bernhard Geyer
Die Memcheck-Unit bindest Du als erste in deine Projektdatei ein und
die der Aufruf von MemChk ist der erste in deinem Projekt.

Auch solltest Du keine Optimierungseinstellungen vornehmen. Und der Pentium-Schalter ist mitlerweile m.E. sinnlos (wieviele Rechner gibt es noch mit diesem Fehlerhaften Prozessor und wie wahrscheinlich ist das Auftreten?)

Anbei meine Compileroptionen, welche funktionieren.

Ich habe die alles so übernommen. Leider das selbe Ergebnis(siehe Anhang oben)...

shmia 17. Sep 2004 11:01

Re: Memproof
 
Zitat:

Zitat von barnti
Die erste Exception ist nur eine allgemeine Speicherverletzung!? Ich kann aufgrund des Logs keine Schlüsse ziehen...

Ja natürlich. MemCheck spürt ja nur Speicherlecks auf. Zugriffsverletzungen aufgrund von
falschen Zeigern (v.a. NIL-Zeiger) werden damit nicht entdeckt.
MemCheck prüft am Programmende, ob zu jeder Speicherreservierung auch die Freigabe des Speichers erfolgt hat.
MemProof geht da deutlich weiter und prüft auch ob Windows-Handles beim Programmende freigegeben wurden. (das Programm müsste eigentlich ResourcenProof heissen, denn es prüft, ob alle Resourcen (Speicher, Handles, Semaphoren, ...) beim Progende korrekt abgegeben werden)
MemProof scheint aber wohl noch einige Bugs zu haben und ist im Beta-Stadium stehengeblieben. :cry:

Beide Tools nützen bei einer Zugriffsverletzung gar nichts.
siehe: Delphi Fehlersuche

barnti 17. Sep 2004 11:06

Re: Memproof
 
Hi,
ok. Dann ist das so in Ordnung und ich muss mal weiter schauen, ob ich den Fehler finde. Danke für deine Hilfe!


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