Domanda

Quando devo inserire i file PDB per un rilascio in produzione?Devo usare il Optimize code bandiera e come vorrei che influenzano le informazioni che mi da un'eccezione?

Se c'è un evidente vantaggio in termini di prestazioni vorrei utilizzare le ottimizzazioni, ma non so se preferirei avere precise informazioni per il debug.Che cosa viene in genere eseguita per una produzione di app?

È stato utile?

Soluzione

Quando si desidera vedere i nomi file di origine e i numeri di riga nel tuo stacktraces, generare Pdb utilizzando il pdb-unica opzione.L'ottimizzazione è separata dal PDB generazione, cioèè possibile ottimizzare e generare Pdb senza un calo di prestazioni.

Da il Linguaggio C# Riferimento

Se si utilizza /debug:full, essere consapevoli del fatto che c'è un certo impatto sulla velocità e la dimensione del JIT codice ottimizzato e un piccolo impatto sulla qualità del codice con /debug:full.Si consiglia di /debug:pdbonly o no PPB per la generazione di codice di sblocco.

Altri suggerimenti

Per rispondere alla tua prima domanda, è solo bisogno di includere file Pdb per un rilascio in produzione se avete bisogno di numeri di riga per il tuo report di eccezioni.

Per rispondere alla tua seconda domanda, utilizzando il "Ottimizzare" la bandiera con Pdb significa che qualsiasi stack "crollo" sarà riflessa nello stack trace.Non so se l'effettivo numero di riga riportato può essere sbagliato, questo ha bisogno di ulteriori indagini.

Per rispondere alla tua terza domanda, si può avere il meglio dei due mondi con un trucchetto.Le principali differenze tra il valore predefinito build di debug e release predefinito è che quando si fa una versione di default di costruire, l'ottimizzazione è acceso e i simboli di debug non vengono emessi.Così, in quattro passaggi:

  1. Cambiare il rilascio config per emettere i simboli di debug.Questo non ha praticamente alcun effetto sulle prestazioni della vostra applicazione, e per questo è molto utile se (quando?) è necessario eseguire il debug di una build di rilascio dell'app.

  2. Compilare utilizzando la vostra nuova build di rilascio config, cioè con i simboli di debug e con di ottimizzazione.Nota che il 99% di ottimizzazione del codice, è fatto dal compilatore JIT, non il compilatore di linguaggio.

  3. Creare un file di testo nel vostro app della cartella che si chiama xxxx.exe.ini (o dll o qualsiasi altra cosa), dove xxxx è il nome del file eseguibile.Questo file di testo, inizialmente, dovrebbe apparire come:

    [.NET Framework Debugging Control]
    GenerateTrackingInfo=0
    AllowOptimize=1
    
  4. Con queste impostazioni, l'app funziona a piena velocità.Quando si desidera eseguire il debug dell'applicazione attivando il debug di monitoraggio ed eventualmente disattivare (CIL) ottimizzazione del codice, basta usare le seguenti impostazioni:

    [.NET Framework Debugging Control]
    GenerateTrackingInfo=1
    AllowOptimize=0 
    

MODIFICA Secondo cateye commento questo può anche lavorare in un ambiente di hosting come ASP.NET.

Non c'è bisogno di includere nella vostra distribuzione, ma non si deve sicuramente essere la loro costruzione e il loro mantenimento.Altrimenti il debug di un dump di arresto anomalo è praticamente impossibile.

Vorrei anche attivare le ottimizzazioni.Mentre si fa il debug più difficile il guadagno in termini di prestazioni sono di solito molto banale, a seconda della natura dell'applicazione.Possiamo facilmente vedere oltre 10 volte le prestazioni sul rilascio vs build di debug per alcuni algoritmi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top