2009-04-25 11 views
5

En la corrección de errores de una pequeña aplicación web ASP.NET/C# que he creado, he encontrado una OutOfMemoryException.Depurando fuera de memoria

No hay consejos sobre dónde buscar ya que es un error de tiempo de compilación. ¿Cómo puedo diagnosticar esta excepción? ¿Asumo que esto es exactamente donde entran en juego los perfiles de memoria? ¿Algun consejo?

Gracias

+2

¿Qué quiere decir exactamente, es un error de tiempo de compilación? ¿Está el compilador lanzando una OutOfMemoryException? – asgerhallas

+1

Un tiempo de compilación sin memoria indicaría que tienes un código fuente REALMENTE extraño. La única forma en que puedo pensar en C++ para hacer eso sería incluir archivos recursivos (es decir, a.h incluye b.h mientras que b.h incluye a.h) - ¿C# tiene algún concepto similar? Básicamente tienes que estar haciendo algo que esté causando que el árbol de análisis sintáctico explote. –

+0

Sí, el compilador arroja el error. No hay ysod, pero hay un error en la ventana de salida cuando se intenta depurar. Creo que el culpable es que tengo un archivo de 3mb xml que analizo (tiene rss feeds) y luego lo visualizo en un lector de RSS personalizado. Cerré el servidor web de desarrollo y lo ordené. – dotnetdev

Respuesta

5

Debe tomar un volcado de memoria de su programa en el punto en el tiempo OutOfMemoryException ocurre y analiza lo que está ocupando tanta memoria.

Tess Ferrandez tiene excellent How-To series en su blog.

1

espero que quiere decir error de ejecución y no en tiempo de compilación de error.

Normalmente, esto sucedería si tiene una lista en crecimiento, que se guarda en un campo estático o en un contenedor ASP.NET de todo el sistema.

Puede ejecutar la aplicación en un generador de perfiles, como:

Red gate ants profiler

1

Lo sentimos anterior, pero a mí me ha sucedido más de 3 veces - Redgate rompió ya sea VS o toda la de Windows ... Pruebe esto approach. Me pregunta si la causa raíz de su problema es la depuración débil, marque log4net. También sencilla si (DebuggingFlag == true) Response.Write ("DebugMsg")

podría ser útil como simple y absurdo que suena ...

Cuestiones relacionadas