Do czego służy plik PDB?
Pliki PDB: Co każdy programista musi wiedzieć
Przykład scenariusza PDB:
Czym jest plik PDB?
Większość programistów powinna wiedzieć, że pliki PDB są używane do pomocy w debugowaniu oprogramowania. Ale jak dokładnie działa, możemy nie znać. Ten artykuł opisuje przechowywanie i zawartość plików PDB. Opisuje także, jak debugger znajduje plik PDB odpowiadający binay oraz jak znajduje plik kodu źródłowego odpowiadający binay. Ten artykuł jest przeznaczony dla wszystkich deweloperów Natywnych i zarządzanych.
Zanim zaczniemy, zdefiniujmy dwa terminy: prywatną budowlę, która oznacza wersję generowaną na własnej maszynie dewelopera; Public Build, czyli build wygenerowany na maszynie public build. Prywatna budowa jest stosunkowo prosta, ponieważ PDB i Binay są w tym samym miejscu, a zwykle problemy, które mamy, dotyczą budowy publicznej.
Najważniejszą rzeczą, którą wszyscy deweloperzy powinni wiedzieć, jest to, że "pliki PDB są równie ważne jak kod źródłowy", bez których nie da się nawet debugować. W budowie publicznej serwer symboli musi przechowywać wszystkie PDB, a gdy użytkownik zgłosi błąd, debugger automatycznie znajduje odpowiadający mu plik PDB w binay, a zarówno Visual Studio, jak i Windbg wiedzą, jak uzyskać dostęp do serwera symboli. Przed zapisaniem PDB i binay na serwerze symboli, musisz również zindeksować źródłowy run PDB, czyli powiązać PDB i źródło.
Następna część zakłada, że Symbol Server i Source Server Indexing są już skonfigurowane. TFS2010 można zrobić tak prosto, jak indeksowanie źródeł i kopiowanie serwera symboli dla nowej konfiguracji.
2. Treść pliku PDB
Oficjalnie rozpoczynając tworzenie treści PDB, PDB nie jest publicznie dostępnym formatem plików, ale Microsoft udostępnia API pomagające pobierać dane z PDB.
Natywny pakiet C++ PDB zawiera następujące informacje: * publiczne, prywatne i statyczne adresy funkcji; * Nazwa i adres zmiennej globalnej; * Nazwy parametrów i zmiennych lokalnych oraz przesunięcia na stosie; * definicje typów klasy, struktury i danych; * Dane pominięcia wskaźnika ramki dla przechodzenia przez natywny stos na x86; * Nazwa i liczba linii w pliku kodu źródłowego;
.NET PDB zawiera tylko 2 części informacji: * Nazwa pliku kodu źródłowego i liczba linii; * oraz nazwę zmiennej lokalnej; * Wszystkie pozostałe dane są już zawarte w . NET Metadata;
|