Symbole

Symbole są przydatne do debugowania i innych narzędzi diagnostycznych. Zawartość plików symboli różni się między językami, kompilatorami i platformami. Na wysokim poziomie symbole są mapowaniem między kodem źródłowym a plikiem binarnym utworzonym przez kompilator. Te mapowania są używane przez narzędzia, takie jak Visual Studio i Visual Studio Code , do rozpoznawania informacji o numerze wiersza źródłowego lub nazw zmiennych lokalnych.

Dokumentacja systemu Windows dotycząca symboli zawiera bardziej szczegółowe informacje na temat symboli systemu Windows, chociaż wiele pojęć dotyczy również innych platform.

Dowiedz się więcej o . Przenośny format PDB platformy NET

Platforma .NET Core wprowadziła nowy format pliku symboli (PDB) — przenośny plik PDB. W przeciwieństwie do tradycyjnych plików PDB, które są tylko systemami Windows, przenośne pliki PDB można tworzyć i odczytywać na wszystkich platformach.

Co to jest plik PDB?

Plik PDB jest plikiem pomocniczym utworzonym przez kompilator w celu udostępnienia innych narzędzi, zwłaszcza debugerów, informacji o tym, co znajduje się w głównym pliku wykonywalnym i sposobie jego tworzenia. Na przykład debuger odczytuje plik PDB w celu mapowania foo.cs wiersza 12 na właściwą lokalizację wykonywalną, aby mógł ustawić punkt przerwania. Format PDB systemu Windows był od dłuższego czasu i ewoluował z innych natywnych formatów symboli debugowania, które były jeszcze starsze. Zaczęło ono swoje życie jako format dla programów natywnych (C/C++). W pierwszej wersji programu .NET Framework format PDB systemu Windows został rozszerzony w celu obsługi platformy .NET.

Format przenośnego pliku PDB został wprowadzony na platformie .NET Core i jest używany domyślnie podczas określania wartości docelowej dla platformy .NET. W przypadku określania wartości docelowej programu .NET Framework można włączyć przenośne symbole PDB, określając <DebugType>portable</DebugType> w pliku projektu. Przenośny format PDB jest oparty na formacie metadanych ECMA-335. Aby uzyskać więcej informacji, zobacz Portable PDB v1.0: Format Specification (Przenośna wersja PDB w wersji 1.0: specyfikacja formatu). Narzędzia diagnostyczne mogą używać System.Reflection.Metadata biblioteki do odczytywania przenośnych plików PDB (na przykład zobacz System.Reflection.Metadata.Document).

Użyj poprawnego formatu PDB dla danego scenariusza

Ani przenośne pliki PDB, ani pliki PDB systemu Windows nie są obsługiwane wszędzie. Aby zdecydować, który format ma być używany, rozważ użycie i debugowanie projektu. Jeśli masz projekt, którego chcesz używać i debugować w obu formatach, możesz użyć różnych konfiguracji kompilacji i skompilować projekt dwa razy, aby obsługiwać oba typy odbiorców.

Obsługa przenośnych plików PDB

Przenośny plik PDB można odczytać w dowolnym systemie operacyjnym i jest zalecanym formatem symboli dla kodu zarządzanego. Istnieje jednak wiele starszych narzędzi i aplikacji, w których nie są obsługiwane:

  • Aplikacje przeznaczone dla programu .NET Framework 4.7.1 lub starszego: drukowanie śladów stosu z mapowaniami z powrotem do numerów wierszy (na przykład na stronie błędu ASP.NET). Nazwa metod nie ma wpływu, ale nazwy plików źródłowych i numery wierszy nie są obsługiwane.

  • Jeśli używasz dekompilatorów platformy .NET, takich jak ildasm lub refleksor .NET, nie zobaczysz mapowań linii źródłowych ani lokalnych nazw parametrów.

  • Najnowsze wersje dia i narzędzi, które używają dia do odczytywania symboli, takich jak WinDBG, obsługują przenośne pliki PDB, ale starsze wersje nie.

  • Mogą istnieć starsze wersje profilatorów, które nie obsługują przenośnych plików PDB.

Aby użyć przenośnych plików PDB w narzędziach, które nie obsługują ich, można użyć pdb2Pdb, który konwertuje między przenośnymi plikami PDB i plikami PDB systemu Windows.

Obsługa plików PDB systemu Windows

Pliki PDB systemu Windows można zapisywać lub odczytywać tylko w systemie Windows. Używanie plików PDB systemu Windows dla kodu zarządzanego jest przestarzałe i jest wymagane tylko w przypadku starszych narzędzi. Zaleca się używanie przenośnych plików PDB zamiast plików PDB systemu Windows, ponieważ niektóre nowsze funkcje kompilatora są implementowane tylko w przypadku przenośnych plików PDB.

Zobacz też