Mostrar el número de líneas en Stack Trace para el ensamblado de .NET en modo Release

¿Hay alguna manera de mostrar las líneas en el seguimiento de la stack para la comstackción / implementación del ensamblado de .NET en el modo de lanzamiento?

ACTUALIZAR:

Mi aplicación se divide en tres proyectos de biblioteca de clase y un proyecto de “sitio web” de ASP.NET. El error que trato de rastrear está en uno de los tres proyectos de biblioteca de clase. Solo implementé el archivo pdb para el proyecto de biblioteca de clase que está generando el error “Referencia de objeto no configurado a una instancia de un objeto”.

Los números de línea aún no aparecen en el seguimiento de la stack. ¿Debo implementar los archivos pdb para que todos los proyectos obtengan los números de línea en el seguimiento de la stack?

Solución de trabajo

La implementación del archivo pdb para cada aplicación solucionó el problema del número de línea.

  • Vaya a la ventana de Propiedades para el proyecto donde desea ver los números de línea de seguimiento de la stack.
  • Haga clic en la pestaña vertical “Crear”.
  • Seleccione la configuración “Liberar”. Compruebe el parámetro constante DEBUG.
  • Desmarque el parámetro “Optimizar código” para evitar el problema de rastreo ocasional con el código en línea (este paso no es esencial).
  • Presione el botón Avanzado … y elija Salida -> Información de depuración -> solo pdb.
  • Implemente el archivo .pdb generado con el ensamblado.

Implementado con el comentario a continuación:

  • Otra cosa que debe verificar es en la sección “Paquete / Publicar web” que la casilla “Excluir símbolos de depuración generados” también está desmarcada

En VS2012, debe desmarcar “Excluir símbolos de depuración generados” en la sección Paquete / Publicar web de las propiedades también.

Mi solución

Copie el archivo pdb en la misma carpeta que el archivo ejecutable.

ahora puedo ver el número de línea cuando ejecuto el archivo exe.

esta es razon

http://msdn.microsoft.com/en-us/library/ee416588%28v=vs.85%29.aspx

Me he encontrado con problemas en el pasado donde siento la necesidad de implementar archivos PDB con una comstackción de lanzamiento para rastrear un error. La razón es, como dijiste, fue que la excepción ocurrió en un método que era muy grande y no pude determinar con precisión dónde estaba sucediendo.

Esto podría ser una indicación de que el método debe ser refactorizado en métodos más pequeños y más granulares. No es una respuesta única para todos, pero este enfoque me ha sido útil a corto plazo (a menudo he encontrado el error durante la refactorización) y, a largo plazo.

Solo un pensamiento.

Incluya símbolos de depuración con su paquete de comstackción / implementación.

En VS 2008 Express, lo encontré en Propiedades del proyecto -> Comstackr -> Opciones de comstackción avanzadas.

Esto funciona todo el tiempo. Solo necesita subscribir el mensaje de seguimiento de la stack. ¡Real Easy! Además, en vb.net debe hacer “Mostrar todos los archivos” e incluir el pdb.

'Err is the exception passed to this function Dim lineGrab As String = err.StackTrace.Substring(err.StackTrace.Length - 5) Dim i As Integer = 0 While i < lineGrab.Length If (IsNumeric(lineGrab(i))) Then lineNo.Append(lineGrab(i)) End If i += 1 End While 'LineNo holds the number as a string 

Versión C #:

 string lineGrab = error.StackTrace.Substring(error.StackTrace.Length - 5); int i = 0; int value; while (i < lineGrab.Length) { if (int.TryParse(lineGrab[i].ToString(), out value)) { strLineNo.Append(lineGrab[i]); } i++; }