AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein FastMM Memory Error Detected beim Debuggen
Thema durchsuchen
Ansicht
Themen-Optionen

FastMM Memory Error Detected beim Debuggen

Ein Thema von TiGü · begonnen am 8. Aug 2012 · letzter Beitrag vom 13. Aug 2012
Antwort Antwort
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.074 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: FastMM Memory Error Detected beim Debuggen

  Alt 10. Aug 2012, 13:28
Das heißt du erstellst in der DLL eine Form-Instanz und gibst diese dann an die EXE weiter?
Nein, sowas natürlich nicht!
Ich mache es richtig und übergebe der DLL ein PAnsiChar.

Zur besseren Veranschaulichung habe ich eine Beispielprojektgruppe mit Delphi 2009 erstellt.
Im angehängten ZIP bitte die Projektgruppe öffnen.
Es ist ein Programm nebst DLL.

In den Projekt-Einstellungen beider Projekte die Werte für Output directory, Working directory, Host application und Unit output directory entsprechend eurer Konfiguration anpassen.
Ich arbeite hier mit Umgebungsvariablen.

Auch müsst ihr ggf. den Ort der FastMM4.pas anpassen, der wird bei mir über die Tools->Options->Delphi Options-> Library - Win32 vererbt.
Die entsprechenden FastMM4-DLLs nicht vergessen.

DLL als Startprojekt:
In der DLL den Breakpoint nach der Stelle setzen, wo die DLL-Frm den neuen Caption-String erhält (DLLMain - Zeile 22).
Sobald das Programm hier anhält, bitte die Maus über die Property Caption von DLLFrm.lbl1.Caption halten.
Normalerweise erscheint dann dort dann der entsprechende String, mit FastMM4 eine Fehlermeldung (siehe Screenshot im Anhang).

Merkwürdigerweise kann man einen Debug-Hint erhalten, wenn man auf lbl1 geht und dort über TControl nach FText sucht.
Hier steht's dann richtig drin.

Es ist irgendwie so, als ob FastMM4 nicht mit GetText von der Caption-Property zurecht kommt.

Kann jemand mein Problem nachvollziehen?
Angehängte Grafiken
Dateityp: png FehlermeldungFastMM4.png (82,6 KB, 17x aufgerufen)
Angehängte Dateien
Dateityp: zip TestProgram.zip (6,1 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#2

AW: FastMM Memory Error Detected beim Debuggen

  Alt 10. Aug 2012, 13:34
Benutzen den Delphi und deine Anwendung die gleiche FastMM-Instanz?
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.074 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: FastMM Memory Error Detected beim Debuggen

  Alt 10. Aug 2012, 13:41
Benutzen den Delphi und deine Anwendung die gleiche FastMM-Instanz?
Meinst du das:

EXE und DLL greifen auf die gleiche FastMM4.pas/-.dcu zu und auch natürlich auf die gleiche FastMM_FullDebugMode.dll (EXE und DLL liegen auch im gleichen Verzeichnis).
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.074 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: FastMM Memory Error Detected beim Debuggen

  Alt 10. Aug 2012, 15:13
Ich zweifle langsam an mir?!
Entweder FastMM hat nen schweren Bug oder die VCL-Sourcen haben nen Sprung.

Beispielprogramm OHNE DLL Beteiligung im Anhang (mit FastMM_FullDebug.dll).

Delphi-Quellcode:
procedure TMainForm.Test;
var
 str : string;
begin
  str := edt1.Text;
  lbl1.Caption := str;
end;
Wenn ich hier reindebugge und per MouseOver mir die Werte für edt1.Text und für lbl1.Caption im Debug-Hint anzeigen lasse, bekomme ich beim Beenden einen Memory Leak Report für 2 x UnicodeStrings:
Code:
--------------------------------2012/8/10 16:15:27--------------------------------
A memory block has been leaked. The size is: 68

This block was allocated by thread 0x12E4, and the stack trace (return addresses) at the time was:
40618B
405894 
4493CF [Controls.pas][Controls][Controls.TControl.GetText][5554]
20036 
46C6CC [Main.pas][Main][Main.TMainForm.btn1Click][39]
44B049 [Controls.pas][Controls][Controls.TControl.Click][6758]
438903 [StdCtrls.pas][StdCtrls][StdCtrls.TCustomButton.Click][4421]
439371 [StdCtrls.pas][StdCtrls][StdCtrls.TCustomButton.CNCommand][4858]
44AADD [Controls.pas][Controls][Controls.TControl.WndProc][6642]
760525A8 [NotifyWinEvent]
76072FCA [Unknown function at SetKeyboardState]

The block is currently used for an object of class: UnicodeString

The allocation number is: 650

--------------------------------2012/8/10 16:15:27--------------------------------
A memory block has been leaked. The size is: 68

This block was allocated by thread 0x12E4, and the stack trace (return addresses) at the time was:
40618B
405894 
4493CF [Controls.pas][Controls][Controls.TControl.GetText][5554]
20036 
46C6CC [Main.pas][Main][Main.TMainForm.btn1Click][39]
44B049 [Controls.pas][Controls][Controls.TControl.Click][6758]
438903 [StdCtrls.pas][StdCtrls][StdCtrls.TCustomButton.Click][4421]
439371 [StdCtrls.pas][StdCtrls][StdCtrls.TCustomButton.CNCommand][4858]
44AADD [Controls.pas][Controls][Controls.TControl.WndProc][6642]
760525A8 [NotifyWinEvent]
76072FCA [Unknown function at SetKeyboardState]

The block is currently used for an object of class: UnicodeString

The allocation number is: 656

--------------------------------2012/8/10 16:15:27--------------------------------
This application has leaked memory. The small block leaks are (excluding expected leaks registered by pointer):

53 - 68 bytes: UnicodeString x 2

Note: This memory leak check is only performed if Delphi is currently running on the same computer. Memory leak detail is logged to a text file in the same folder as this application. To disable this memory leak check, undefine "EnableMemoryLeakReporting".
Angehängte Dateien
Dateityp: zip LittleTestProgram.zip (441,1 KB, 4x aufgerufen)

Geändert von TiGü (10. Aug 2012 um 15:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#5

AW: FastMM Memory Error Detected beim Debuggen

  Alt 10. Aug 2012, 15:31
Dieses Verhalten von FastMM kenne ich aber auch: ReportMemoryLeaksOnShutdown auf true, Breakpoint gesetzt, Leaks werden gemeldet. Breakpoint entfernt, Leaks verschwinden. Woran das liegt, wüsste ich auch gern.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#6

AW: FastMM Memory Error Detected beim Debuggen

  Alt 10. Aug 2012, 16:18
Wäre es denkbar, das Delphi zum Debuggen/Anzeigen Speicher über FastMM anfordert, aber nicht freigibt, wenn die Anwendung beendet ist, sondern entweder später oder eben überhaupt nicht?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#7

AW: FastMM Memory Error Detected beim Debuggen

  Alt 10. Aug 2012, 16:44
Ausschließen würde ich das nicht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz