AGB  ·  Datenschutz  ·  Impressum  







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

MemProof Auswerten

Ein Thema von newuser01 · begonnen am 5. Okt 2006 · letzter Beitrag vom 7. Okt 2006
Antwort Antwort
newuser01

Registriert seit: 31. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#1

MemProof Auswerten

  Alt 5. Okt 2006, 22:12
Hallo

Ich habe MemProof als Tool bei Delphi eingebunden und mein Projekt mal überprüft. Folgendes ist dabei rausgekommen

Code:
//wenn die Anwendung gestartet ist

Pointers            Live Pointer             4118      4133      439466      450882
Memory              Virtual Memory             22        23      446464      462848
Memory              Global Heap                15        23      426676     1802240
Memory              Local Heap                  2         2        5692        5692
COM                 CoInitialize                1         1           0           0
OLE                 SysString                  15        22         119         181
Exceptions          Exception                  83        83         249         249
GDI                 Pen                         5         6           0           0
GDI                 Bitmap                    138       141           0           0
GDI                 Brush                       8        11           0           0
GDI                 Font                       10        10           0           0
GDI                 Palette                     8        16           0           0
GDI                 Region                      0         5           0           0
GDI                 DC                          0        15           0           0
User                Window                     63        64           0           0
User                Menu                        6         6           0           0
User                Icon                        6         7           0           0
User                Cursor                      7         7           0           0
User                Timer                       3         5           0           0
User                Window DC                   0         3           0           0
Kernel              Process                     1         1           0           0
Kernel              Thread                      1         1           0           0
Kernel              File Mapping                1         1           0           0
Kernel              File Mapping View           1         1           0           0
Kernel              Mutex                       1         1           0           0
Kernel              Event                       3         3           0           0
Kernel              Critical Section          273       274           0           0
Kernel              Critical Section Enter      0         6           0           0
Kernel              Find First                  0         1           0           0
Registry            Registry                    0         1           0           0
Code:
//wenn die Anwendung beendet wurde

Pointers            Live Pointer                1      4133          48      450882
Memory              Virtual Memory              1        23        4096      462848
Memory              Global Heap                 0        23           0     1802240
Memory              Local Heap                  0         2           0        5692
COM                 CoInitialize                0         1           0           0
OLE                 SysString                   0        22           0         181
Exceptions          Exception                 113       113         339         339
GDI                 Pen                         0         6           0           0
GDI                 Bitmap                      0       143           0           0
GDI                 Brush                       0        11           0           0
GDI                 Font                        0        10           0           0
GDI                 Palette                     0        16           0           0
GDI                 Region                      0         5           0           0
GDI                 DC                          0        15           0           0
User                Window                      0        64           0           0
User                Menu                        0         6           0           0
User                Icon                        0         7           0           0
User                Cursor                      0         7           0           0
User                Timer                       0         5           0           0
User                Window DC                   0         3           0           0
Kernel              Process                     1         1           0           0
Kernel              Thread                      0         1           0           0
Kernel              File Mapping                0         1           0           0
Kernel              File Mapping View           0         1           0           0
Kernel              Mutex                       0         1           0           0
Kernel              Event                       0         3           0           0
Kernel              Critical Section            0       274           0           0
Kernel              Critical Section Enter      0         6           0           0
Kernel              Find First                  0         1           0           0
Registry            Registry                    0         1           0           0
Wenn die Anwendung beendet wurde sollte doch eigentlich bei "Resource Count Current" alles auf Null stehen oder ?
In den "Resourcen Details" verweist er mich auf folgenden Code

Delphi-Quellcode:
slDelimiter := TStringList.Create;

  if not FileExists(ExtractFilePath(Application.ExeName)+'\setting.ini') then
  begin

  Ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'setting.ini');

  Ini.WriteString('Equalizer','Default', '|15|15|15|15|15|15|15|15|15|15|');
  Ini.WriteString('Equalizer','Classical', '|15|15|15|15|15|15|5|5|5|2|');
  Ini.WriteString('Equalizer','Club', '|15|15|19|23|23|23|19|15|15|15|');
  Ini.WriteString('Equalizer','Dance', '|23|20|16|15|15|10|10|10|15|15|');
  Ini.WriteString('Equalizer','Full Bass', '|25|25|25|20|17|12|7|3|3|3|');
  Ini.WriteString('Equalizer','Full Bass & Treble', '|20|20|15|10|13|17|23|25|28|28|');
  Ini.WriteString('Equalizer','Full Treble', '|5|5|5|14|17|23|30|30|30|30|');
  Ini.WriteString('Equalizer','Laptop Speakers/Headphones', '|17|22|17|14|15|16|17|19|21|23|');
  Ini.WriteString('Equalizer','Large Hall', '|22|22|17|17|15|10|10|10|15|15|');
  Ini.WriteString('Equalizer','Live', '|9|15|20|20|20|20|20|17|17|17|');
  Ini.WriteString('Equalizer','Party', '|20|20|15|15|15|15|15|15|20|20|');
  Ini.WriteString('Equalizer','Pop', '|13|17|20|20|17|13|10|10|10|10|');
  Ini.WriteString('Equalizer','Reggae', '|15|15|12|9|15|20|20|15|15|15|');
  Ini.WriteString('Equalizer','Rock', '|23|20|10|5|13|19|22|25|25|25|');
  Ini.WriteString('Equalizer','Ska', '|12|10|10|15|18|21|24|24|25|24|');
  Ini.WriteString('Equalizer','Soft', '|20|17|13|11|13|17|21|23|25|27|');
  Ini.WriteString('Equalizer','Soft Rock', '|17|17|13|11|9|5|10|15|20|24|');
  Ini.WriteString('Equalizer','Techno', '|19|15|12|9|9|15|20|24|24|22|');

  sTmp := Ini.ReadString('Equalizer',sEQSetting,sEQSetting);

  slDelimiter.Delimiter := '|';
  slDelimiter.DelimitedText := sTmp;

  //Equalizer einstellen
  JvxSlider1.Value := StrToInt(slDelimiter[1]);
  JvxSlider2.Value := StrToInt(slDelimiter[2]);
  JvxSlider3.Value := StrToInt(slDelimiter[3]);
  JvxSlider4.Value := StrToInt(slDelimiter[4]);
  JvxSlider5.Value := StrToInt(slDelimiter[5]);
  JvxSlider6.Value := StrToInt(slDelimiter[6]);
  JvxSlider7.Value := StrToInt(slDelimiter[7]);
  JvxSlider8.Value := StrToInt(slDelimiter[8]);
  JvxSlider9.Value := StrToInt(slDelimiter[9]);
  JvxSlider10.Value := StrToInt(slDelimiter[10]);

  sTmp := '';
  slDelimiter.Clear;
  slDelimiter.Free;
  Ini.Free;

  end
Wo steckt nun der Fehler ? und was genau bedeutet eigentlich "Exceptions 113" eine kleine Auswertung und Erklärung zu diesem Beispiel wäre sehr hilfreich für mich
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

Re: MemProof Auswerten

  Alt 6. Okt 2006, 06:39
Ein Leak fällt mir gleich ins Auge (aua )

Du erzeugst slDelimiter immer, aber gibst es nur frei, wenn du die Settings.ini erzeugen musstest.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: MemProof Auswerten

  Alt 6. Okt 2006, 08:04
Hallo,

mit memproof habe ich auch angefangen

Jetzt benutze ich memcheck (internet),
das zeigt dir die Fehler viel genauer an.


Heiko
Heiko
  Mit Zitat antworten Zitat
newuser01

Registriert seit: 31. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#4

Re: MemProof Auswerten

  Alt 6. Okt 2006, 17:53
Wie benutze ich Memcheck ? hat jemand vielleicht ein Link wo es genau beschrieben wird ?
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: MemProof Auswerten

  Alt 6. Okt 2006, 18:13
Hallo,

Die pas mit in dein Quellverzeichnis
und dann am besten in der dpr

uses
{$IFDEF MEMCHECK}
MemCheck,
{$ENDIF}


und dann beim Begin

{$IFDEF MEMCHECK}
MemChk;
{$ENDIF}

also Aufruf.


Das IFDEF ist von mir,
so kann ich dass auch Ausblenden.

Nach dem Laufenlassen des Programms wird
1. per Exception zum jeweiligen Problem gesprungen.
mit F9 springt man zum nächsten
2. eine Datei XXX_MemCheck.log erzeugt und angezeigt
XXX ist die Exe.
In der Datei stehen alle leaks.

1. mit Ctrl+C (?) abgebrochen werden,
dann ist nur die Datei da.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: MemProof Auswerten

  Alt 6. Okt 2006, 21:08
Oder du nimmst FastMM..

Hat noch ein paar andere Vorteile gegenüber MemCheck (u.a. das MemCheck nicht mehr weiterentwickelt wird)

Und falls du Resourcen-Leaks suchst ist AQTime sein Geld wert. Exe mit TD32-Debuginfos kompilieren. In AQTime mit Resourcen-Checker-Option starten. Programm beenden und du hast deine Liste der GDI-Ressourcen-Löcher. Klick auf die Zeile mit dem Resourcenloch liefert dir auch die Position im Code wo diese Ressource angefordert wurde.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
newuser01

Registriert seit: 31. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#7

Re: MemProof Auswerten

  Alt 7. Okt 2006, 13:28
DANKE für eure Hilfe
Gruß: Holger

[Hobby-Programmierer]
  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 18:33 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