Co to jest plik PDB?


251

Co to jest plik PDB i jak mogę wykluczyć go z folderu wydania podczas przebudowywania mojego rozwiązania?


17
pdb jest plikiem bazy danych programu i jest tworzony podczas kompilacji. Ten plik zawiera informacje o debugowaniu i stanie projektu, które umożliwiają przyrostowe łączenie konfiguracji debugowania programu.
pavanred

@pavanred czy jesteś pewien, że kompilator C # ma również przyrostowe łączenie? Słyszałem o tym tylko w świecie C ++. W projekcie C ++ włączasz / wyłączasz przyrostowe łączenie z właściwościami projektu. Czy jest też opcja w projekcie C #?
RBT

Odpowiedzi:


235

Plik PDB zawiera informacje do pracy z debuggerem. W kompilacji Release jest mniej informacji niż w kompilacji Debug. Ale jeśli nie chcesz, aby w ogóle nie był generowany, przejdź do właściwości kompilacji projektu, wybierz konfigurację Release, kliknij „Zaawansowane ...” i pod „Informacje debugowania” wybierz „Brak”.


2
@Jon Czy pomaga to dostarczyć użytkownikowi dodatkowych informacji w przypadku awarii aplikacji? (tzn. czy pomaga to w oknie JIT, a nie „Ten program musi się zakończyć, wysłać raport o błędach systemu Windows”)
Jared Harley,

19
Pamiętaj, że powinieneś prawdopodobnie uwzględnić je w swoich wersjach debugowania, ponieważ pozwala to na śledzenie wyjątków do określonej linii w kodzie. Bez symboli w pliku pdb trudno będzie wskazać konkretne problemy w celu ich rozwiązania. Nie musisz też wykluczać ich z kompilacji wersji, ponieważ czasem dodatkowe informacje w dużym raporcie mogą być bardzo przydatne.
Darbio,

4
@Jared: Tak, zawiera ślad stosu wyjątku, który będzie wskazywał na określoną funkcję i wiersz kodu.
Darbio,

1
@Jared: Co rozumiesz przez „okno JIT”? Jest mało prawdopodobne, aby użytkownik podał znacznie więcej informacji, ale może to umożliwić dołączenie debugera do kompilacji wydania, jeśli zajdzie taka potrzeba. Zazwyczaj jednak nie uwzględniałbyś go w aplikacjach użytkowników końcowych. Oczywiście to, że zostało skopiowane do folderu Release, nie oznacza, że ​​musisz go wysłać w instalatorze ...
Jon Skeet,

3
@Ata: PDB, nie PDF. Rozdziel te dwie rzeczy w swojej głowie - są to zupełnie różne formaty plików, do różnych celów. Dołączenie WPB nie wprowadziłoby problemu szczególnie; to może uczynić pracę haker jest nieco łatwiejsze, ale jest to, że szczególne znaczenie dla ciebie? Ogólnie rzecz biorąc, .NET można stosunkowo łatwo zdekompilować w większości przypadków - jeśli martwisz się tym, po prostu nie wysyłanie PDB nie jest dobrym rozwiązaniem.
Jon Skeet,

129

Początkowo zadałem sobie pytanie „ Czy potrzebuję pliku PDB wdrożonego na komputerze mojego klienta? ” I po przeczytaniu tego postu postanowiłem wykluczyć ten plik.

Wszystko działało dobrze, aż do dzisiaj, kiedy próbowałem dowiedzieć się, dlaczego w oknie komunikatu zawierającym plik Exception.StackTracebrakowało informacji o pliku i numerze linii - niezbędnych do rozwiązania problemu wyjątku. Przeczytałem ponownie ten post i znalazłem kluczową bryłę informacji: że chociaż PDB nie jest konieczny do uruchomienia aplikacji, konieczne jest, aby w pliku znajdowały się numery plików i linii StackTrace. Dołączyłem plik PDB do folderu wykonywalnego i teraz wszystko jest w porządku.


2
Jest to bardzo ważna część, o której należy pamiętać, o której accepted answertutaj nie wspomina.
Monku

85

PDB jest skrótem dla P ROGRAM D ata B azy. Jak sama nazwa wskazuje, jest to repozytorium (pamięć trwała, taka jak bazy danych) do przechowywania informacji wymaganych do uruchomienia programu w trybie debugowania. Zawiera wiele ważnych istotnych informacji wymaganych podczas debugowania kodu (w Visual Studio), na przykład w których punktach wstawiłeś punkty przerwania, w których spodziewasz się, że debugger się zepsuje w Visual Studio.

To jest powód, dla którego wiele razy Visual Studio nie osiąga punktów przerwania, jeśli usuniesz *.pdbpliki z folderów debugowania. Debuger programu Visual Studio może również podać dokładną liczbę wierszy pliku kodu, w którym wystąpił wyjątek w śladzie stosu za pomocą *.pdbplików. Tak skutecznie pliki pdb są naprawdę dobrodziejstwem dla programistów podczas debugowania programu.

Zasadniczo nie zaleca się wykluczania generowania *.pdbplików. Z punktu widzenia wersji produkcyjnej powinieneś zrobić pliki pdb, ale nie wysyłaj ich do strony klienta w instalatorze produktu. Zachowaj wszystkie wygenerowane pliki PDB na serwerze symboli, z którego w razie potrzeby można będzie korzystać / odwoływać się w przyszłości. Szczególnie w przypadkach debugowania problemów, takich jak awaria procesu. Gdy zaczniesz analizować pliki zrzutu awaryjnego i jeśli oryginalne *.pdbpliki utworzone podczas procesu kompilacji nie zostaną zachowane, Visual Studio nie będzie w stanie odczytać dokładnego wiersza kodu, który powoduje awarię .

Jeśli nadal chcesz *.pdbcałkowicie wyłączyć generowanie plików dla dowolnej wersji, przejdź do właściwości projektu -> Karta kompilacji -> Kliknij Advancedprzycisk -> Wybierz nonez menu rozwijanego „Informacje debugowania” -> naciśnij, OKjak pokazano na poniższej migawce .

Brak Ustawienie informacji debugowania dla projektu w języku C #

Uwaga : To ustawienie będzie musiało zostać wykonane osobno dla konfiguracji kompilacji „Debuguj” i „Zwolnij”.


13

Plik PDB zawiera informacje używane przez debugger. Uruchomienie aplikacji nie jest wymagane i nie musi być zawarte w wydanej wersji.

Możesz wyłączyć tworzenie plików pdb w Visual Studio. Jeśli budujesz z wiersza poleceń lub skryptu, pomiń /Debugprzełącznik.


2
Tryb zwolnienia nadal domyślnie buduje PDB. Możesz jednak zmienić właściwości projektu, aby go wyłączyć.
Jon Skeet,

Tak; wciąż jest dostarczany z domyślnym projektem.
Andrew Barber,

Właśnie sprawdziłem i domyślnie dostaję jeden, jeśli korzystam z Visual Studio.
Mark Byers,

4

Program Baza danych debugowania (pdb) to format plików firmy Microsoft do przechowywania informacji debugowania.

Podczas budowania projektu za pomocą programu Visual Studio lub wiersza polecenia kompilator tworzy te pliki symboli.

Sprawdź Dokumenty Microsoft

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.