2010-05-13 10 views
9

Ho un'applicazione VB.net. Attualmente la versione di rilascio dell'applicazione viene prodotta senza un file PDB. Questo mi dà registri degli errori privi di dettagli utili come i numeri di riga. Sto cercando di includere i file PDB con build futuri, ma mi piacerebbe sapere quali sono i vantaggi e gli svantaggi di questo (prestazioni saggio, dimensioni saggio, sicurezza del codice saggio)Vantaggi e svantaggi di includere i file PDB con l'applicazione di rilascio

+0

Che cosa stai cercando di ottenere con i file PDB? A meno che non si offusca il codice, si hanno già delle belle tracce di stack con il codice gestito (e suppongo che PDB renda comunque impossibile l'offuscamento ...). L'unico vantaggio che si ottiene sono i simboli "nascosti" come la gente del posto e i nomi dei parametri. – Krumelur

+0

Drats. Mi piace questa domanda, ma è già stata posta qui: http://stackoverflow.com/questions/1307482/whats-the-risk-of-deploying-debug-symbols-pdb-file-in-a-production-environment – David

+2

I nomi dei parametri e i numeri di riga sono molto utili. La nostra app, è molto grande costruita da diversi sviluppatori diversi su diverse versioni di VB. Attualmente abbiamo il nome delle procedure nello stack, ma sarebbe bello avere un po 'più di dati. – zeocrash

risposta

10

Quando si distribuiscono i simboli di debug per la tua applicazione, diventa davvero facile per qualcuno di venire avanti e decodificare il tuo lavoro, che alcune persone trovano indesiderabile. Allo stesso modo, è necessario distribuire più file e il progetto distribuibile diventa più grande. I file PDB non causano rallentamenti nell'app, poiché la spedizione di un PDB non sempre impedisce di perseguire ottimizzazioni (devi solo fare attenzione: le impostazioni predefinite del progetto "Debug" tendono a non ottimizzare i tuoi output quando generare PDB).

11

so che sto andando ottenere picchiato per questo, ma ...

Sono d'accordo con Dave Markle, ma mi piacerebbe aggiungere che un vantaggio di pubblicare i file PDB è, come hai detto , MOLTO carino per il debug.

Detto questo, non vendo software e il codice che scrivo è tutto per uso interno nella nostra azienda. In questo contesto, non vedo un problema con la messa in produzione del codice di debug, insieme ai file PDB. Non ho mai visto un successo in termini di prestazioni e, in tutta onestà, raramente i nostri utenti ci forniscono le informazioni corrette se riscontrano eccezioni non gestite. Certo, proviamo a gestire le eccezioni correttamente, ma come sai, gli errori accadranno. La nostra strategia consiste nell'aggiungere un gestore di eccezioni globale a TUTTI i progetti e registrare tali eventi nel database. Questi errori contengono i numeri di riga perché includiamo i file di debug e, di conseguenza, siamo in grado di identificare e reagire rapidamente al codice errato, correggerlo e ottenere più applicazioni prive di bug. Per me (e per i nostri utenti) questo è un vantaggio enorme di cui non vorrei fare a meno.

Quindi, se siete in una situazione simile, dico dimenticare la posizione ufficiale (in questo caso) e andare avanti e pubblicare i file PDB con UNA importante avvertimento.

Assicurarsi che qualsiasi applicazione Web distribuita con i file PDB sia completamente sicura che TUTTE le eccezioni siano gestite correttamente e che non si espongano inavvertitamente righe di codice in una pagina di errore Asp.NET standard.

0

Trovo utile avere anche le informazioni di debug create per la versione di rilascio - aiuta a catturare i bug. Non fa rallentare il programma. Ma non dovresti spedire il file PDB con la tua applicazione, se non vuoi che altri siano in grado di eseguirne il reverse-engineering più facilmente. Dagli solo ai tester.

+0

L'applicazione è un'applicazione intenzionale. Sarà usato solo all'interno della nostra azienda.Le restrizioni dell'utente impediscono agli utenti di poter decodificare il codice – zeocrash

2

Creare pdbs per la build di rilascio, ma non spedirli. Mantenere il pdbs da qualche parte sicuro con la build e il codice sorgente corrispondenti. Se si verifica un arresto anomalo in tempo reale o simili, è possibile utilizzare il pdbs per eseguire il debug post-mortem utilizzando Debugging Tools for Windows o Visual Studio.

+1

Proviamo a mantenere tutte le eccezioni gestite. Quindi non facciamo il debug post mortem. Sulle eccezioni gestite registriamo la traccia dello stack sul database – zeocrash

+2

Il debug post mortem è utile anche quando non si verificano eccezioni generate, ad es. Se l'applicazione si blocca. È possibile acquisire un mini-dump del processo sospeso e quindi eseguirne il debug in remoto utilizzando il pdbs e il codice sorgente. – Polyfun

Problemi correlati