2009-02-25 12 views
8

So che i PDB vengono generati per gestiti in in .NET fornendo al compilatore l'argomento/debug. C'è un modo per specificare questo nella GUI VS (2005)?Come generare i PDB per i progetti gestiti .net in modalità di rilascio?

L'unico modo ho potuto ottenere di generare PDBS nella modalità di rilascio finora è quello di modificare manualmente il file .csproj e di aggiungere:

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

sotto le impostazioni 'Stampa':

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

Un'altra cosa: ho imparato da MSDN here che i valori possibili per il tag DebugType sono:

  • full
  • pdbonly
  • none

modo questi valori influenzano il comportamento del compilatore?

risposta

7

In VS2008, è possibile impostare la proprietà utilizzando le proprietà del progetto -> Build -> Advanced ... -> Informazioni di debug.

+0

Bello! Ho verificato che funziona anche in VS 2005. Ho fissato le impostazioni di "Build" un milione di volte, ma non ho mai notato il pulsante "Avanzate". Grazie! –

+0

In VS 2008 (e forse 2005) pdb-only è il valore predefinito per build di versioni (e completo per il debug). – Richard

4

Ho trovato this MONO request che potrebbe far luce su quale sia la differenza tra "full" e "pdbonly".

CSC ha un debugtype "pdbonly" che genera PDBs, producendo codice runtime, ossia ottimizzata, attributi non debugger, ecc

Questo è importante per poter ottenere tracce dello stack utili da codice di qualità di rilascio.

Mi sembra che l'esistenza dei 2 tag (DebugSymbols e DebugType) sia ridondante.

+2

"ottenere utili stack" Ciò non è corretto. Otterrete sempre utili tracce di stack nel codice .NET a causa della presenza di metadati di tipo. I PDB in release flavor sono importanti per il single-stepping attraverso il codice di produzione, ma è possibile che si verifichino errori nel debugger a causa di ottimizzazioni. –

+0

@Daniel Bullington, Non si ottengono numeri di riga e nomi di file senza file pdb, il che rende le tracce dello stack almeno "meno utili" – tster

+0

@tster sì Sono d'accordo, ma anche senza PDB (e quindi numeri di riga/nomi di file), le tracce dello stack sono ancora utili in misura minore :) –

6

In DEBUG:

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

In STAMPA:

<DebugSymbols>true</DebugSymbols> 
<DebugType>pdbonly</DebugType> 
<Optimize>true</Optimize> 
Problemi correlati