Speicherverbrauch meiner Anwendung feststellen
-
knivil schrieb:
valgrind ist z.B. das Tool schlechthin (finde ich). Der Speicherverbrauch als auch leaks werden aber erst nach dem Beenden des Programms angezeigt.
-
Naja, Cygwin und Co, wenns kein Port gibt. Gibt es anscheined nicht, Pech gehabt. Ausserdem: Nicht-betriebssytemspezifische Teile auslagern und irgendwo anders Testen. Oder eigenes new/delete bzw. malloc/free anbieten, dass die Aufrufe als auch die angeforderten Bytes protokolliert. Ist auch nicht schwer, da die eigentliche Aufrufe ja nur an die richtigen new/delete malloc/free weitergeleitet werden muessen.
-
knivil schrieb:
Naja, Cygwin und Co, wenns kein Port gibt. Gibt es anscheined nicht, Pech gehabt. Ausserdem: Nicht-betriebssytemspezifische Teile auslagern und irgendwo anders Testen. Oder eigenes new/delete bzw. malloc/free anbieten, dass die Aufrufe als auch die angeforderten Bytes protokolliert. Ist auch nicht schwer, da die eigentliche Aufrufe ja nur an die richtigen new/delete malloc/free weitergeleitet werden muessen.
Mich würde aber auch mal ein Tool interessieren, das hier genauere Angaben liefert und nativ auf win32 läuft. VC zeigt zwar die leaks beim beenden an ( mit dem richtigen SysCall), aber auch nicht immer.
rya.
-
-
-
Jochen Kalmbach schrieb:
Da gibt's nix zu grinsen, wenn man gute Seiten empfiehlt...
-
knivil schrieb:
Naja, Cygwin und Co, wenns kein Port gibt. Gibt es anscheined nicht, Pech gehabt.
ne, glück gehabt. mit solch vorsinntflutlichem zeug sollen sich mal schön die unix-fans herumquälen.
-
Martin Richter schrieb:
Unterstützt kein MSVC2008 leider... und ich konnte auch keine Report erzeugen trotz offensichtlicher Leaks, die zum Test erzeugt wurden.
rya.
-
Nimm die aktuelle Version von hier:
http://blog.kalmbachnet.de/files/LeakFinder-RC8.zip
-
Jochen Kalmbach schrieb:
Nimm die aktuelle Version von hier:
http://blog.kalmbachnet.de/files/LeakFinder-RC8.zipDanke dir, Jochen.
Ich hab ohne Anleitung ein wenig suchen müssen, hab jetzt aber folgenden code zur Verwendung:#ifdef NL_PLATFORM_WIN32 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ) #else int main(int argc, char** arg) #endif { LeakFinderXmlOutput leak; CApplication app; app.go(); // hier läuft das ganze programm. leak.ShowCallstack(); return TRUE; }
Ich bekomme jede Menge output und der wird auch in einer Datei gespeichert.
Beim lesen der Datei stürzt das Programm aber ab:Informationen über das Aufrufen von JIT-Debuggen
anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.************** Ausnahmetext **************
System.Xml.XmlException: Das 'MEMREPORT'-Anfangstag in Zeile '1' stimmt nicht mit dem Endtag von 'LEAK' überein. Zeile 7, Position 5.
bei System.Xml.XmlTextReaderImpl.Throw(Exception e)
bei System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
bei System.Xml.XmlTextReaderImpl.ThrowTagMismatch(NodeData startTag)
bei System.Xml.XmlTextReaderImpl.ParseEndElement()
bei System.Xml.XmlTextReaderImpl.ParseElementContent()
bei System.Xml.XmlTextReaderImpl.Read()
bei System.Xml.XmlTextReader.Read()
bei MemLeakAnalyse.LeakFile.ReadXMLFile(String xmlFile)
bei MemLeakAnalyse.Form1.button1_Click(Object sender, EventArgs e)
bei MemLeakAnalyse.Form1.btnXMLFileSelect_Click(Object sender, EventArgs e)
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
bei System.Windows.Forms.Button.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)************** Geladene Assemblys **************
mscorlib
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3082 (QFE.050727-3000).
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
----------------------------------------
MemLeakAnalyse
Assembly-Version: 1.0.3138.18245.
Win32-Version: 1.0.3138.18245.
CodeBase: file:///C:/Dokumente%20und%20Einstellungen/****/Desktop/LeakFinder-RC8/MemLeakAnalyse/bin/Release/MemLeakAnalyse.exe.
----------------------------------------
System.Windows.Forms
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
----------------------------------------
System
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll.
----------------------------------------
System.Drawing
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
----------------------------------------
System.Xml
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3082 (QFE.050727-3000).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll.
----------------------------------------
System.XML.resources
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml.resources/2.0.0.0_de_b77a5c561934e089/System.Xml.resources.dll.
----------------------------------------
System.Windows.Forms.resources
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
----------------------------------------
mscorlib.resources
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3082 (QFE.050727-3000).
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
----------------------------------------************** JIT-Debuggen **************
Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
Konfigurationsdatei der Anwendung oder des Computers
(machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.Zum Beispiel:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
Ausnahmen an den JIT-Debugger gesendet, der auf dem
Computer registriert ist, und nicht in diesem Dialogfeld behandelt.Ich hoffe, ich habe es richtig verwendet :).
rya.