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”.
@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.
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 .
Uwaga : To ustawienie będzie musiało zostać wykonane osobno dla konfiguracji kompilacji „Debuguj” i „Zwolnij”.
Odpowiedzi:
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”.
źródło
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.StackTrace
brakował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 liniiStackTrace
. Dołączyłem plik PDB do folderu wykonywalnego i teraz wszystko jest w porządku.źródło
accepted answer
tutaj nie wspomina.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
*.pdb
pliki 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ą*.pdb
plików. Tak skutecznie pliki pdb są naprawdę dobrodziejstwem dla programistów podczas debugowania programu.Zasadniczo nie zaleca się wykluczania generowania
*.pdb
plikó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*.pdb
pliki 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
*.pdb
całkowicie wyłączyć generowanie plików dla dowolnej wersji, przejdź do właściwości projektu -> Karta kompilacji -> Kliknij Advancedprzycisk -> Wybierznone
z menu rozwijanego „Informacje debugowania” -> naciśnij, OKjak pokazano na poniższej migawce .Uwaga : To ustawienie będzie musiało zostać wykonane osobno dla konfiguracji kompilacji „Debuguj” i „Zwolnij”.
źródło
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ń
/Debug
przełącznik.źródło
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
źródło