2009-04-25 5 views
5

Lors de la correction d'un bug d'une petite application web ASP.NET/C# que j'ai faite, j'ai rencontré une exception OutOfMemoryException.Débogage hors de l'exception mémoire

Il n'y a pas de conseils quant à l'endroit où regarder car il s'agit d'une erreur de compilation. Comment puis-je diagnostiquer cette exception? Je suppose que c'est exactement là que le profilage de la mémoire entre en jeu? Des conseils?

Merci

+2

Que voulez-vous dire par là, c'est une erreur de compilation? Le compilateur lance-t-il une exception OutOfMemoryException? – asgerhallas

+1

Un temps de compilation hors de la mémoire indiquerait que vous avez du code source VRAIMENT étrange. La seule façon que je puisse penser en C++ pour faire cela serait d'inclure des fichiers récursifs (c'est-à-dire que a.h inclut b.h alors que b.h inclut a.h) - C# a-t-il un concept similaire? Vous devez faire quelque chose qui fait sauter l'arbre d'analyse. –

+0

Oui, le compilateur lance lui-même l'erreur. Il n'y a pas d'ysod, mais une erreur dans la fenêtre de sortie lors de la tentative de débogage. Je pense que le coupable est que j'ai un fichier XML de 3 Mo que j'analyse (il a des flux rss) et ensuite afficher dans un lecteur RSS personnalisé. J'ai fermé le serveur web de dev et l'ai trié. – dotnetdev

Répondre

5

Vous devez prendre un vidage de la mémoire de votre programme à le point dans le temps OutOfMemoryException se produit et analyse ce qui prend tant de mémoire.

Tess Ferrandez a excellent How-To series sur son blog.

1

Il y a deux choses que je peux suggérer ici:

1) Peut-être que votre machine fonctionne de mémoire. Consultez quelques idées sur http://digioz.blogspot.com/2008/11/visual-studio-systemoutofmemory.html

2) Essayez de compiler le projet en dehors de Visual Studio à l'aide de l'utilitaire de ligne de commande VS et exécutez msbuild "Nom_fichier_solution.sln". Est-ce que votre crash est toujours là?

Hope that helps :)

1

J'espère que vous entendez erreur d'exécution, et non la compilation erreur.

Généralement, cela se produirait si vous aviez une liste en croissance, qui est enregistrée dans un champ statique ou un conteneur ASP.NET à l'échelle du système.

Vous pouvez exécuter l'application dans un profileur, comme:

Red gate ants profiler

1

Désolé ci-dessus, mais pour moi, il est arrivé plus de 3 fois - Redgate cassé soit VS ou l'ensemble de Windows ... Essayez ceci approach. Je recherche la cause de votre problème de débogage faible, vérifiez log4net. Aussi simple, si (DebuggingFlag == true) Response.Write ("DebugMsg")

pourrait être utile aussi simple et cela paraît absurde ...

Questions connexes