2012-05-06 2 views
6

Sto costruendo il mio progetto C# window service di VS 2010 in modalità Release. La mia prima possibilità di essere sorpresa è stata la creazione di file pdb anche in modalità release. Non ero in grado di caricare i simboli di debug dopo aver allegato il processo per il debug.Perché una compilation di progetti VS 2010 genera file pdb quando si crea in modalità Release e Debug?

La mia domanda è che se abbiamo file pdb sia in modalità di debug che di rilascio, allora perché c'è bisogno di due modalità di compilazione.

+0

Domanda veloce. Che tipo di progetto? .NET, C++? – ervinbosenbacher

+0

Verifica impostazioni progetto-> Build-> Avanzate-> Impostazioni avanzate di configurazione-> Informazioni di debug. Penso che se è impostato su pdb-only in modalità release, genererà i file pdb. – ervinbosenbacher

risposta

6

La mia domanda è che se abbiamo file PDB sia in modalità debug e rilascio allora perché c'è bisogno di due modalità di compilazione

Ci sono differenze altro rispetto alla generazione del PDB tra il debug e il rilascio. Se vai nelle proprietà di Build e vai in "Advanced", ci sono diversi livelli di informazioni di debug da generare: Full, solo PDB e None.

Inoltre, ci sono diversi livelli di ottimizzazione in fase di compilazione e la presenza di diversi simboli del preprocessore (ad esempio in modo che ogni Debug.Assert sia presente o assente).

Naturalmente è possibile avere anche le proprie varietà di configurazione build, con una varietà di opzioni.

+0

qual è la differenza tra Full e solo PDB? –

+1

@Romil: http://msdn.microsoft.com/en-us/library/8cw0bt21(v=vs.80).aspx –

+2

e http://mariangemarcano.blogspot.com/2011/11/visual-studio- debug-and-remote.html –

2

Ci sono molte ragioni per cui esiste una modalità di debug/release, non correlata alla creazione di file PDB.

VS esegue i programmi compilati più rapidamente in modalità di rilascio. Inoltre, ci sono direttive del compilatore che possono cambiare il modo in cui si comporta il programma se si è in modalità debug vs release. Ad esempio, è possibile utilizzare le direttive del compilatore per disabilitare i blocchi trycatch di primo livello in modo da poter isolare un'eccezione che viene generata su una specifica riga di codice.

Questo è solo un paio di esempi. In breve, la modalità di debug ha molti più scopi rispetto alla semplice creazione di file PDB per te.

1

È possibile avere più di due modalità di compilazione. Di solito, il debug e il rilascio significano se si vogliono ottimizzazioni o no. Indipendentemente da ciò, è comunque possibile generare informazioni di debug, solo un PDB per una build di rilascio non sarà di grande aiuto. funzioni inline, le variabili possono essere esclusi, ecc

0

Recentemente ho fatto un WinUpdate (20.120.508) e Visual Studio sembrava essere molto lento il debug dopo con un ritardo di 1 minuto dopo la compilazione da runDebug lag, poi, quando il programma di debug usciti, un altro ritardo di 1 minuto per get controllo di nuovo dello studio visivo. Ho pulito tutto, ma nessuna gioia.

Soluzione: ho eliminato manualmente i file * .sdf e * .suo nel mio progetto/soluzione e li ho ricostruiti. Il problema è andato via magicamente.

Non so perché, ma qualcosa non era sincronizzato, danneggiato o incompatibile con l'aggiornamento e doveva essere spazzato via manualmente.