Pregunta

¿Hay alguna forma de mostrar las líneas en el seguimiento de la pila para el ensamblado .NET compilado / implementado en modo Release?

ACTUALIZACIÓN:

Mi aplicación se divide en tres proyectos de biblioteca de clase y un sitio web ASP.NET '' proyecto. El error que estoy tratando de rastrear está en uno de los proyectos de biblioteca de tres clases. Solo implementé el archivo pdb para el proyecto de biblioteca de clases que está generando la " Referencia de objeto no establecida en una instancia de un objeto " error.

Los números de línea todavía no se muestran en el seguimiento de la pila. ¿Necesito implementar los archivos pdb para todos los proyectos para obtener los números de línea en el seguimiento de la pila?

Solución de trabajo

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

¿Fue útil?

Solución

  • Vaya a la ventana Propiedades del proyecto donde desea ver los números de línea de seguimiento de la pila.
  • Haga clic en Construir " pestaña vertical " ;.
  • Seleccione " Release " configuración. Verifique el parámetro constante DEBUG.
  • Desmarque el " Optimizar código " parámetro para evitar el problema de rastreo ocasional con 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 el "Paquete / Publicar Web" sección que el " Excluir símbolos de depuración generados " la casilla de verificación también está desmarcada

Otros consejos

En VS2012 necesita 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 la razón

http://msdn.microsoft. com / es-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 versión de lanzamiento para rastrear un error. La razón es, como dijiste, 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 refactorizarse en métodos más pequeños y más granulares. No es una respuesta única para todos, pero este enfoque me ha servido bien a corto plazo (a menudo he encontrado el error durante la refactorización) y a la larga.

Solo un pensamiento.

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

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

Esto funciona todo el tiempo. Solo necesita subcadenar el mensaje de seguimiento de pila. Muy fácil! Además, en vb.net necesita hacer el " 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++;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top