Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi FastMM im Service (https://www.delphipraxis.net/134926-fastmm-im-service.html)

Mr_G 1. Jun 2009 19:38


FastMM im Service
 
Hallo zusammen,
leider bekomme ich beim beenden meines Service ab und an so ein Problembericht-Fenster. Im Log steht natürlich nichts aussagekräftiges. Ich vermute ein Speicherleck und wollte daher mal das hochgelobte FastMM ausprobieren. Gesagt getan: FastMM ganz nach oben in die uses gepackt und
Delphi-Quellcode:
ReportMemoryLeaksOnShutDown := True;
hinter das begin der dpr gestellt. Leider tut sich da aber nichts...
Wie verwende ich FastMM bei einem Service?

hoika 1. Jun 2009 19:43

Re: FastMM im Service
 
Hallo,

Zitat:

Problembericht-Fenster. Im Log steht natürlich nichts aussagekräftiges.
Wie wäre es, mal das Problembericht-Fenster + Log zu posten ?
Wenn es für dich nicht aussagekräftig ist, viell. für andere ?

Heiko

mjustin 1. Jun 2009 19:54

Re: FastMM im Service
 
Zitat:

Zitat von Mr_G
Hallo zusammen,
leider bekomme ich beim beenden meines Service ab und an so ein Problembericht-Fenster. Im Log steht natürlich nichts aussagekräftiges. Ich vermute ein Speicherleck und wollte daher mal das hochgelobte FastMM ausprobieren. Gesagt getan: FastMM ganz nach oben in die uses gepackt und
Delphi-Quellcode:
ReportMemoryLeaksOnShutDown := True;
hinter das begin der dpr gestellt. Leider tut sich da aber nichts...
Wie verwende ich FastMM bei einem Service?

Einfachste Lösung, ohne Service :)

Für den Service würde ich eine Reihe von Unittests mit DUnit und eine Anwendung schreiben, die das gleiche wie der Service macht (soweit möglich). Darin könnte man mit FastMM4 schon einige Lecks finden und schliessen.

Um aber die Lecks auch im Service zu finden, müsste FastMM4 so konfiguriert werden, dass bei am Programmende die Lecks in eine Datei geschrieben werden.

Das FastMM Options Interface (GUI) (kostenlos) ist dabei für die richtige Konfiguration von FastMM4 sehr hilfreich.

Siehe auch SO:
http://stackoverflow.com/questions/9...g-in-a-service

omata 1. Jun 2009 20:02

Re: FastMM im Service
 
Zitat:

Zitat von Mr_G
Im Log steht natürlich nichts aussagekräftiges.

Auch mit Debug-Infos kompiliert? (Alles!)

generic 1. Jun 2009 22:06

Re: FastMM im Service
 
Map Dateien solltest du mit erzeugen.

Das Reports... zeigt am Ende der Anwendung ein Fenster, das geht natürlich nicht bei einen Dienst.
Daher solltest du mit den Compilerschaltern das Reporting nach deinen Bedürfnissen anschalten und konfigurieren.

"DEBUG"-Builds haben normal gute Einstellungen.

Im Entwickler war mal ein Tutor:
Entwickler Magazin (Ausgabe: 05.08/13.08.2008) Artikel: Speicher managen mit FastMM

Dezipaitor 1. Jun 2009 23:01

Re: FastMM im Service
 
Ich teste einen Dienst zuerst immer in Delphi direkt (Vista, XP). Dazu starte ich Delphi unter dem SystemAccount. Das geht mit RunAsSys, siehe http://blog.delphi-jedi.net/2008/05/...s-an-easy-way/
Dann funktionieren auch alle Fensterausgaben

Mr_G 2. Jun 2009 02:28

Re: FastMM im Service
 
Liste der Anhänge anzeigen (Anzahl: 1)
Vielen Dank für die Tipps!
Ich werde mich morgen mal daran versuchen und mich wieder melden...
@hoika: Ich hab mal einen Screenshot angehangen.

Mr_G 2. Jun 2009 11:45

Re: FastMM im Service
 
So...
Ich hab mir mal das Tool geladen und die Optionen so gewählt, dass eine Log-Datei erstellt werden soll. Leider wird aber nur eine Log-Datei erstellt wenn ich den Service aus der IDE starte (was natürlich nicht zu dem gewünschten Ergebnis führt). Wie kann ich FastMM nun dazu bringen mir auch außerhalb der IDE ein Log zu erzeugen?

@mjustin & Dezipaitor: Leider ist der Service ohne VCL geschrieben, sodass ich diese Anleitung nicht anwenden kann.

Dezipaitor 2. Jun 2009 11:50

Re: FastMM im Service
 
Zitat:

Zitat von Mr_G
@mjustin & Dezipaitor: Leider ist der Service ohne VCL geschrieben, sodass ich diese Anleitung nicht anwenden kann.

Das ist uninteressant. Im Endeffekt ruft man einfach die Servicehandler-Funktion direkt auf.

Mr_G 2. Jun 2009 11:53

Re: FastMM im Service
 
Achso... soll heißen ich starte das BDS mittels RunAsSystem und schreibe den Service so um, dass er sich direkt "als Service" startet?


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