Memorywatch

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Memorywatch

Beitrag von satmax »

DllLoad( "memwatch.dll" ) hat mir vor 2 Tagen sehr geholfen. Hatte ein Memomryleak da ich irrtümlich 2 mal die gleiche Variable angelegt hatte. Durch LOCAL war die STATIC natürlich nicht sichtbar:
STATIC Function TopStatusInfo()
LOCAL oLine1 // Falsch da doppelt!!!!
LOCAL cTxt
STATIC oLine1:=NIL //

cTxt:=...
IF oLine1== NIL // war daher immer NIL
oLine1:=tdSay(2,1,cTxt, oAppDlg:oTopBar,,,,)
ELSE
oLine1:SetCaption(cTxt)
ENDIF
da diese Funktion alle 5 Sekunden aufgerufen wird war nach einigen Stunden Schluss. Die paar Bytes waren aber im Taskmanger nur schwer erkennbar. Wenn man aber im MemoryWatch Fenster sieht das die USER Handles alle 5 Sekunden um 1 erhöht werden ist der Fehler schnell gefunden (TopStatusInfo() wird zumindest alle 5 Sekunden, tlw. aber auch öfter aufgerufen).

Ich kann diese einfach zu verwendende Tool nur jedem empfehlen, einfach beim Programmstart laden: DllLoad( "memwatch.dll" )
Gruß
Markus
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2125
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 75 Mal

Re: Memorywatch

Beitrag von Werner_Bayern »

Servus Markus,

sowas führt doch unweigerlich zu einem "[Error] Duplicate variable declaration oLine1"!
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Memorywatch

Beitrag von satmax »

Hast recht, ich kann es jetzt auch nicht mehr nachvollziehen. Eventuell hatte ich nur anstelle STATIC oLine1 LOCAL oLine1, eigenartig.
Gruß
Markus
Antworten