2009-04-25 15 views
5

Bei der Fehlerbehebung einer kleinen ASP.NET/C# Web App, die ich gemacht habe, habe ich eine OutOfMemoryException festgestellt.Debugging outofmemoryexception

Es gibt keine Tipps, wo Sie suchen müssen, da dies ein Fehler bei der Kompilierung ist. Wie kann ich diese Ausnahme diagnostizieren? Ich gehe davon aus, dass genau hier Memory Profiling ins Spiel kommt? Irgendwelche Tipps?

Dank

+2

Was genau meinst du, es ist ein Kompilierzeitfehler? Löscht der Compiler eine OutOfMemoryException? – asgerhallas

+1

Eine Kompilierzeit aus dem Speicher würde anzeigen, dass Sie wirklich seltsamen Quellcode haben. Der einzige Weg, an den ich in C++ denken könnte, wären rekursive Include-Dateien (d. H. A.h enthält b.h, während b.h a.h enthält) - hat C# ein ähnliches Konzept? Du musst im Grunde etwas tun, das den Parse-Baum in die Luft jagt. –

+0

Ja, der Compiler selbst wirft den Fehler. Es gibt kein Ysod, aber einen Fehler im Ausgabefenster beim Debugging. Ich denke, der Übeltäter ist ich habe eine 3MB xml-Datei, die ich analysieren (es hat RSS-Feeds) und dann in einem benutzerdefinierten RSS-Feed-Reader angezeigt. Ich habe den dev-Webserver geschlossen und es sortiert. – dotnetdev

Antwort

5

Sie sollten ein Speicherabbild des Programms nehmen an Der Zeitpunkt OutOfMemoryException tritt auf und analysiert, was so viel Speicher beansprucht.

Tess Ferrandez hat eine excellent How-To series auf ihrem Blog.

1

Es gibt zwei Dinge, die ich hier vorschlagen kann: Laufen

1) Vielleicht ist das Gerät aus dem Speicher. Einige Ideen zu http://digioz.blogspot.com/2008/11/visual-studio-systemoutofmemory.html

2) Versuchen Sie, das Projekt außerhalb von Visual Studio mit dem VS-Befehlszeilenprogramm zu kompilieren und führen Sie msbuild "SolutionfileName.sln" aus. Stürzt es dann noch?

Hoffnung, das hilft :)

1

Ich hoffe, Sie Laufzeitfehler bedeuten, und nicht die Fehler bei der Kompilierung.

Normalerweise würde dies passieren, wenn Sie eine wachsende Liste haben, die in einem statischen Feld oder einem systemweiten ASP.NET-Container gespeichert wird.

Sie können die Anwendung in einem Profiler ausführen, wie:

Red gate ants profiler

1

Leider oben, aber mir hat es mehr als 3 mal passiert - Redgate entweder VS brach oder das ganze Fenster ... Versuchen Sie diese approach. Ich Frage die Ursache für Ihr Problem ist schwach Debugging, überprüfen Sie log4net. Auch einfache if (DebuggingFlag == true) Response.Write ("DEBUGMSG")

so einfach nützlich sein könnte und absurd es klingt ...