2012-05-06 35 views
6

Buduję mój projekt okna C# projektu VS 2010 w trybie Release. Moją pierwszą szansą na zaskoczenie było to, że tworzy pliki pdb nawet w trybie wydania w trybie. Nie mogłem załadować symboli debugowania po dołączeniu procesu do debugowania.Dlaczego kompilacja projektu VS 2010 generuje pliki pdb podczas budowania w trybie Release and Debug?

Moje pytanie jest takie, że jeśli mamy pliki pdb zarówno w trybie debugowania, jak i zwolnienia, to dlaczego potrzebny jest tryb kompilacji dwóch.

+0

Szybkie pytanie. Jaki rodzaj projektu? .NET, C++? – ervinbosenbacher

+0

Sprawdź ustawienia projektu-> Build-> Advanced-> Advanced Build Settings-> Debug Info. Myślę, że jeśli jest ustawiony na pdb-only w trybie wydania, wygeneruje pliki pdb. – ervinbosenbacher

Odpowiedz

6

Moje pytanie jest, że jeśli mamy pdb plików zarówno w trybie debugowania i uwalniania to dlaczego istnieje potrzeba trybie dwóch kompilacji

Istnieją różnice inne niż generowanie PDB między debugowaniem a wydaniem. Jeśli przejdziesz do Właściwości kompilacji i przejdziesz do "Zaawansowane", istnieją różne poziomy informacji do debugowania, które mają być generowane - Pełna, Tylko PDB i Brak.

Ponadto istnieją różne poziomy optymalizacji czasu kompilacji oraz obecność różnych symboli preprocesora (np. Tak, że każdy Debug.Assert będzie obecny lub nieobecny).

Oczywiście można również mieć własne odmiany konfiguracji kompilacji, z różnymi opcjami.

+0

jaka jest różnica między pełnym i tylko PDB? –

+1

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

+2

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

2

Istnieje wiele powodów, dla których istnieje tryb debugowania/zwolnienia, niezwiązany z tworzeniem plików PDB.

VS wykonuje szybciej skompilowane programy w trybie zwolnienia. Ponadto istnieją dyrektywy kompilujące, które mogą zmienić sposób działania programu, jeśli jesteś w trybie debugowania lub zwolnienia. Na przykład można użyć dyrektyw kompilacji, aby wyłączyć bloki najwyższego poziomu, aby można było wyizolować wyjątek, który jest zgłaszany do określonego wiersza kodu.

To tylko kilka przykładów. W skrócie, tryb debugowania ma wiele więcej zastosowań niż tylko tworzenie plików PDB.

1

Możesz mieć więcej niż dwa tryby kompilacji. Zwykle wskaźnik debugowania i zwolnienia oznacza, czy chcesz optymalizacji, czy nie. Bez względu na to, nadal możesz generować informacje debugowania, ale tylko PDB dla wersji wydania nie będzie zbyt pomocne. Funkcje inline, zmienne można wykluczyć, itp

0

Niedawno zrobiłem winupdate (20120508) i Visual Studio wydawała się być bardzo powolny debugowanie potem z opóźnieniem 1 minuty po kompilacji to-runDebug opóźnieniem, a następnie, gdy program debug wyszedł, kolejny opóźnienie 1 minuty do get ponownie kontrolować studio wizualne. Zrobiłem wszystko, ale nie było radości.

Rozwiązanie: ręcznie usunąłem pliki * .sdf i * .suo do mojego projektu/rozwiązania i przebudowałem je. Problem zniknął magicznie.

Nie wiem dlaczego, ale coś było niezsynchronizowane, uszkodzone lub niezgodne z aktualizacją i musiało zostać odrzucone ręcznie.

Powiązane problemy