2010-03-03 22 views
49

Voglio distribuire la versione di rilascio della mia applicazione fatta in C#.La versione di rilascio C# ha ancora il file .pdb

Quando creo usando la configurazione Release, posso ancora vedere che i file .pdb sono prodotti, il che significa che la mia applicazione può essere ancora sottoposta a debug. Ciò significa anche che alcune informazioni di debug sono presenti da qualche parte nel mio codice, rallentandolo un po '.

Se ciò è vero, come posso eliminare completamente tutte le informazioni di debug prodotte nei binari? Conosci anche il motivo del rilascio di .pdb? La configurazione Release ha il controllo Optimize code e solo la costante TRACE è definita, non DEBUG.

Grazie per l'assistenza.

+1

@meagar è necessario mantenere i file .pdb anche per la modalità di rilascio per riferimenti futuri anche se non si desidera che vengano impacchettati nel programma di installazione finale MSI da inviare ai clienti. I file Pdb saranno il tuo unico raggio di speranza quando qualcosa irrompe in modo non gestito che causa l'arresto della tua applicazione in scatole di produzione. i file pdb sono molto utili per eseguire il debug dei file di dettagli di arresto anomalo utilizzando lo strumento winDbg fornito con Windows SDK. La flag di codice OTTIMIZZATA dovrebbe rimanere selezionata come hai giustamente menzionato. – RBT

+2

@RasikBihariTiwari Non mi interessa. Non ho fatto la domanda. – meagar

+0

Mi dispiace @meagar! Avrei dovuto invece indirizzare l'Abruzzo Forte. Ci dispiace per l'inconvenienza. Erano le 6 del mattino e sembra che stavo ancora assonnato;) – RBT

risposta

79

Se si desidera disabilitare la generazione del file PDB, è necessario utilizzare le "Advanced build settings" dialogo disponibili nella proprietà del progetto dopo aver fatto clic sul pulsante "Advanced..."" che si trova nella parte inferiore della scheda Build.

Set Output - Debug info:-None per il rilascio generazione configurazione e nessun file pdb verrà generato

6

Avere il compilatore generare un file .pdb non si esclude a vicenda per averlo ottimizzare il codice.

Per ulteriori informazioni su questo argomento, leggere questi blogentries.

+0

Sì, ma l'incorporamento delle informazioni di debug nell'assembly può anche avere un impatto sulle prestazioni (secondo Microsoft) – Justin

40

L'impostazione predefinita è generare PDB anche per build di versioni .Questa è una funzionalità e non è necessario disabilitarla. La creazione di PDB significa che è possibile ottenere maggiori informazioni durante il debug. le prestazioni del codice non sono influenzate in alcun modo dalla presenza di file PDB.

+0

Ciao Brian! Grazie! Ero scettico per questo, ma sembra che tutti siano d'accordo su questo! –

+0

Quindi tutti sono d'accordo sul fatto che i file PDB non riducano le prestazioni? Qualcuno ha fatto dei test per confermare? – theJerm

+0

@ theJerm l'app non legge i PDB durante l'esecuzione. Quindi, a parte lo spazio su disco che occupano, non c'è nessun sovraccarico a meno che non si stia eseguendo il debug. –

12

Non è necessario spedire i file .PDB con la distribuzione del rilascio, ma sono utili da mantenere in giro, ad esempio è possibile eseguire il debug del codice in esecuzione su una macchina diversa utilizzando i PDB sulla macchina per ottenere la linea numero di dove si verificano le eccezioni.

Senza l'uso dei file .PDB, i numeri di riga ei nomi dei file non sono inclusi negli stacktraces, quindi è molto più difficile eseguirne il debug.

+0

Grazie! Questo è stato utile! Non avevo realizzato che il numero di linea non fosse presente nello StackTrace di ogni oggetto di eccezione! –

13

È possibile controllare la generazione di pdb/simboli nelle proprietà del progetto in Build -> Avanzate ... -> Informazioni di debug :. Le opzioni sono:

  • nessuno (nessuna informazione simbolo)
  • pieno (un PDB verrà prodotto, e alcune informazioni sui simboli è incorporato nel gruppo)
  • PDB-solo (verrà prodotto un file .pdb ma l'assembly non subirà alcun impatto)

Vedere http://msdn.microsoft.com/en-us/library/8cw0bt21%28VS.80%29.aspx per ulteriori informazioni.

ho fortemente consiglio di scegliere l'opzione PDB-only, non l'opzione nessuno in quanto ti dà ancora alcune informazioni simbolo senza influenzare l'assemblea - probabilmente troverete che questo è l'attuale impostazione che hai sul il tuo rilascio crea.

Problemi correlati