AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Compiler-Schalter in Basis-Units

Ein Thema von Scurra · begonnen am 30. Okt 2019 · letzter Beitrag vom 8. Nov 2019
Antwort Antwort
Scurra

Registriert seit: 19. Jan 2015
57 Beiträge
 
Delphi 10.3 Rio
 
#1

Compiler-Schalter in Basis-Units

  Alt 30. Okt 2019, 08:26
Delphi-Version: 10.2 Tokyo
Hallo zusammen,

wir verwenden bei uns DUnit für Unittests und möchten die Überprüfung von Memory-Leaks ermöglichen. Das haben wir in Delphi Seattle schon geschafft, weil die Units damals als Komponenten hinzugefügt wurden und nicht im Basis-Paket von Delphi enthalten war. Jetzt mit Delphi Rio sind die Units im Basis-Paket von Delphi enthalten, so dass wir es nicht mehr ohne Weiteres schaffen, die Überprüfung auf Memory-Leaks einzubauen.

Genauer gesagt haben wir folgendes Problem: Wir möchten FastMM als Memory-Manager benutzen und es gibt zahlreiche Seiten im Internet, die beschreiben, wie man den Memory-Manager integrieren kann. Ein Schritt dabei ist, dass man "FASTMM" als Compiler-Schalter setzen muss. Mit Delphi Rio haben wir nun aber das Problem, dass die Basis-Units nicht neu kompiliert werden. Somit wird der Compiler-Schalter nicht aktiv und die Integration gelingt nicht.

Als Work-Around haben wir die betroffene Units (GUITestRunner.pas und GUITestRunner.dfm) zu unseren Komponenten hinzugefügt, die wir über den Bibliothekspfad integrieren. Dadurch werden die Units von dort verwendet und auch neu kompiliert.

Gibt es eine schönere Lösung für das Problem als die betroffenen Units zu kopieren bzw. über den Bibliothekspfad hinzuzufügen? Kann man der IDE irgendwie mitteilen, dass die Basis-Units neu mit dem Compiler-Schalter kompiliert werden sollen?
  Mit Zitat antworten Zitat
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
513 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Compiler-Schalter in Basis-Units

  Alt 30. Okt 2019, 09:54
Als Work-Around haben wir die betroffene Units (GUITestRunner.pas und GUITestRunner.dfm) zu unseren Komponenten hinzugefügt, die wir über den Bibliothekspfad integrieren. Dadurch werden die Units von dort verwendet und auch neu kompiliert.

Gibt es eine schönere Lösung für das Problem als die betroffenen Units zu kopieren bzw. über den Bibliothekspfad hinzuzufügen? Kann man der IDE irgendwie mitteilen, dass die Basis-Units neu mit dem Compiler-Schalter kompiliert werden sollen?
Einfache Antwort: Nein.
Thomas Mueller
  Mit Zitat antworten Zitat
Scurra

Registriert seit: 19. Jan 2015
57 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Compiler-Schalter in Basis-Units

  Alt 30. Okt 2019, 10:22
Einfache Antwort: Nein.
Schade. Aber danke für die Antwort!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
7.077 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Compiler-Schalter in Basis-Units

  Alt 30. Okt 2019, 10:40
Allerdings steht in der readme-fastmm.txt auch:
Zitat:
Delphi / BDS 2006 and later already include FastMM support for leak reporting on shutdown and so does not require the conditional definitions mentioned below for earlier versions of Delphi.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.598 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Compiler-Schalter in Basis-Units

  Alt 30. Okt 2019, 10:53
Für Memoryleak Detection in DUnit/DUnitX Tests empfehle ich die Benutzung von LeakCheck.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.284 Beiträge
 
Delphi XE4 Professional
 
#6

AW: Compiler-Schalter in Basis-Units

  Alt 30. Okt 2019, 11:53
Hallo,
also ich binde die FastMM4 als erste Unit im Projekt ein.
Dann noch die INC-Datei konfigurieren und fertig.

Außerdem: Wie weiter oben schon steht, FastMM4 ist seit x Delphi-Versionen
in einer abgespeckten Version bereits im Delphi drin.
ReportMemoryLeaksOnShutDown:=True kann also direkt in der DPR geschrieben werden.
Heiko
  Mit Zitat antworten Zitat
Scurra

Registriert seit: 19. Jan 2015
57 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Compiler-Schalter in Basis-Units

  Alt 8. Nov 2019, 11:04
Allerdings steht in der readme-fastmm.txt auch:
Zitat:
Delphi / BDS 2006 and later already include FastMM support for leak reporting on shutdown and so does not require the conditional definitions mentioned below for earlier versions of Delphi.
Nun ja, im GUITestRunner von DUnit gibt es Code mit "{$IFDEF FASTMM}", der nicht ausgeführt wird, weil der Compiler-Schalter nicht gesetzt ist. Das führt dazu, dass man die Checkbox für die Memory-Leaks nicht setzen kann.

Wir haben die Unit inzwischen explizit zum Projekt hinzugefügt, damit es neu kompiliert wird, man kann nun die Checkbox auch setzen, aber die Prüfung scheint trotzdem nicht stattzufinden bzw. es wird kein Memory-Leak erkannt, obwohl wir extra welche eingebaut haben für unseren Test.

Zitat:
Für Memoryleak Detection in DUnit/DUnitX Tests empfehle ich die Benutzung von LeakCheck.
Danke, das werden wir uns mal anschauen.

Zitat:
ReportMemoryLeaksOnShutDown:=True kann also direkt in der DPR geschrieben werden.
Soweit ich weiß, führt ReportMemoryLeaksOnShutDown dazu, dass ein Fenster angezeigt wird mit den Memory-Leaks. Das ist sicherlich geeignet, wenn man die Tests manuell startet. Für einen automatischen Build-Prozess ist das leider nicht geeignet.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 23:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf