2009-02-25 11 views
8

Sé que los PDB se generan para los proyectos gestionados en .NET dando al compilador el argumento/debug. ¿Hay alguna manera de especificar esto en la GUI VS (2005)?¿Cómo generar PDB para proyectos administrados .net en modo de lanzamiento?

La única manera de que pudiera llegar a generar PDBs en modo de lanzamiento hasta el momento es modificar manualmente el archivo .csproj y añadir:

<DebugSymbols>true</DebugSymbols> 
<DebugType>full</DebugType> 

en la configuración de 'liberación':

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 

Otra cosa: he aprendido de MSDN here que los valores posibles de la etiqueta DebugType son:

  • full
  • pdbonly
  • none

¿Cómo estos valores afectan el comportamiento del compilador?

Respuesta

7

En VS2008, puede establecer la propiedad utilizando las propiedades del proyecto -> Build -> Advanced ... -> Debug Info.

+0

¡Agradable! Verifiqué que también funciona en VS 2005. Observé la configuración de 'Construir' un millón de veces, pero nunca me di cuenta de ese botón 'Avanzado'. Gracias! –

+0

En VS 2008 (y tal vez 2005) pdb-only es el valor predeterminado para compilaciones de versiones (y completo para la depuración). – Richard

4

Encontré this MONO request que puede arrojar algo de luz sobre la diferencia entre 'full' y 'pdbonly'.

csc tiene una DEBUGTYPE "pdbonly" que genera PDBs, mientras que la producción código de tiempo de ejecución, es decir, optimizado, los atributos de no depurador, etc.

Esto es importante para ser capaz de obtener trazas de la pila útiles desde código de calidad de versión.

Me parece que la existencia de las 2 etiquetas (DebugSymbols y DebugType) es redundante.

+2

"obtener trazas de la pila útiles" Esto es incorrecto. Siempre obtendrá rastros de pila útiles en el código .NET debido a la presencia de metadatos de tipo. Los PDB en el sabor de liberación son importantes para el paso a paso único a través del código de producción, pero es posible que obtenga errores en el depurador debido a las optimizaciones. –

+0

@Daniel Bullington, No obtiene números de línea ni nombres de archivos sin archivos pdb, lo que hace que los registros de pila sean al menos "menos útiles" – tster

+0

@tster sí, estoy de acuerdo, pero incluso sin PDB (y por lo tanto, números de línea/nombres de archivo), los rastros de la pila aún son útiles en menor grado :) –

6

En DEBUG:

<DebugSymbols>true</DebugSymbols> 
<DebugType>full</DebugType> 
<Optimize>false</Optimize> 

En RELEASE:

<DebugSymbols>true</DebugSymbols> 
<DebugType>pdbonly</DebugType> 
<Optimize>true</Optimize> 
Cuestiones relacionadas