2010-02-03 11 views
28

Estoy usando C# que proviene de un fondo Java - Tengo una excepción pero no me dice el número de línea - Solo el nombre del método.C# Excepciones que no dan números de línea

¿Es eso habitual? ¿Se trata de versiones de depuración/liberación?

+0

Sí, sin la información de depuración, el CLR no puede informar el número de línea. Todavía no debería ser demasiado difícil encontrar el método y ver el problema en una sesión de depuración. – Lazarus

+0

dupe: http://stackoverflow.com/questions/1328836 – raven

+0

posible duplicado de [Mostrar número de línea en el manejo de excepciones] (http://stackoverflow.com/questions/688336/show-line-number-in-exception-handling) – bmargulies

Respuesta

36

Los números de línea deben estar disponibles al compilar en Debug, siempre y cuando guarde los archivos pdb en el directorio de la aplicación.

Esto también funcionará en Release si habilita la creación de PDB, según Justin's answer.

Si le interesa, más información se puede encontrar en PDB Files (MSDN)

13

La propiedad StackTrace de la clase Exception contiene números de línea, al menos si la información de depuración (archivo PDB) se dispone:

using System; 
class Program { 
    public static void Main() { 
     try { 
      throw new Exception("test"); 
     } catch (Exception e) { 
      Console.WriteLine(e.StackTrace); 
     } 
    } 
} 

dará la siguiente salida con el archivo pdb:

at Program.Main() in X:\code\test\test\Program.cs:line 6 

y esto sin:

at Program.Main() 
4

Asegúrese de que los archivos PDB de su aplicación se implementan con la aplicación. Los archivos PDB son los archivos que utiliza el CLR para determinar los números de línea del código fuente.

15

esto se debe a los símbolos de depuración no estar disponible - cuando usted construye su proyecto, asegúrese de que usted tiene "completa" situado en la configuración de depuración (Project properties ->Build ->Advanced ->Debug info) y también asegurarse de que el los archivos pdb resultantes están presentes junto con el archivo en el mismo directorio cuando está ejecutando su aplicación.

Cuestiones relacionadas