Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Symbole sind nützlich für das Debuggen und andere Diagnosetools. Der Inhalt von Symboldateien variiert zwischen Sprachen, Compilern und Plattformen. Auf hoher Ebene sind Symbole eine Zuordnung zwischen dem Quellcode und der vom Compiler erzeugten Binärdatei. Diese Zuordnungen werden von Tools wie Visual Studio und Visual Studio Code verwendet, um Informationen zur Quellzeilennummer oder lokale Variablennamen aufzulösen.
Die Windows-Dokumentation zu Symbolen enthält ausführlichere Informationen zu Symbolen für Windows, obwohl viele der Konzepte auch für andere Plattformen gelten.
Erfahren Sie mehr über das portable PDB-Format von .NET
.NET Core hat ein neues Symboldateiformat (PDB) eingeführt – das portable PDB. Im Gegensatz zu herkömmlichen PDBs, die nur unter Windows laufen, können tragbare PDBs auf allen Plattformen erstellt und gelesen werden.
Was ist ein PDB?
Eine PDB-Datei ist eine Hilfsdatei, die von einem Compiler erstellt wird, um andere Tools, insbesondere Debugger, Informationen darüber bereitzustellen, was in der Hauptdatei der ausführbaren Datei enthalten ist und wie sie erstellt wurde. Beispielsweise liest ein Debugger eine PDB-Datei, um foo.cs Zeile 12 mit dem richtigen ausführbaren Speicherort zu verknüpfen, damit er einen Breakpoint festlegen kann. Das Windows-PDB-Format hat sich seit langem entwickelt und hat sich aus anderen systemeigenen Debuggingsymbolformaten entwickelt, die sogar älter waren. Es begann sein Leben als Format für systemeigene (C/C++)-Programme. Für die erste Version von .NET Framework wurde das Windows PDB-Format erweitert, um .NET zu unterstützen.
Das portable PDB-Format wurde in .NET Core eingeführt und wird standardmäßig bei der Zielbestimmung von .NET verwendet. Wenn Sie .NET Framework als Ziel verwenden, können Sie portable PDB-Symbole aktivieren, indem Sie <DebugType>portable</DebugType>
in Ihrer Projektdatei angeben. Das portable PDB-Format basiert auf dem ECMA-335-Metadatenformat. Weitere Informationen finden Sie unter Portable PDB v1.0: Format Specification. Diagnosetools können die System.Reflection.Metadata Bibliothek verwenden, um portable PDB-Dateien zu lesen (z. B. siehe System.Reflection.Metadata.Document).
Verwenden des richtigen PDB-Formats für Ihr Szenario
Es werden weder tragbare PDBs noch Windows-PDBs überall unterstützt. Um zu entscheiden, welches Format verwendet werden soll, überlegen Sie, wo Ihr Projekt verwendet und gedebuggt wird. Wenn Sie über ein Projekt verfügen, das Sie in beiden Formaten verwenden und debuggen möchten, können Sie verschiedene Buildkonfigurationen verwenden und das Projekt zweimal erstellen, um beide Arten von Consumern zu unterstützen.
Unterstützung für portable PDBs
Ein portabler PDB kann auf jedem Beliebigen Betriebssystem gelesen werden und ist das empfohlene Symbolformat für verwalteten Code. Es gibt jedoch eine Reihe von Legacytools und -anwendungen, in denen sie nicht unterstützt werden:
Anwendungen für .NET Framework 4.7.1 oder früher: Ausgeben von Stapelüberwachungen mit Zuordnungen zurück zu Zeilennummern (wie bei einer ASP.NET-Fehlerseite). Der Name der Methoden ist nicht betroffen, nur die Quelldateinamen und Zeilennummern werden nicht unterstützt.
Wenn Sie .NET-Dekompilierer wie ildasm oder .NET Reflector verwenden, werden keine Quellzeilenzuordnungen oder lokale Parameternamen angezeigt.
Die neuesten Versionen von DIA und Tools, die DIA zum Lesen von Symbolen wie WinDBG verwenden, unterstützen tragbare PDBs, aber ältere Versionen nicht.
Möglicherweise gibt es ältere Versionen von Profilern, die keine portablen PDBs unterstützen.
Um tragbare PDBs auf Tools zu verwenden, die sie nicht unterstützen, können Sie Pdb2Pdb verwenden, die zwischen tragbaren PDBs und Windows-PDBs konvertiert wird.
Unterstützung für Windows-PDBs
Windows-PDBs können nur unter Windows geschrieben oder gelesen werden. Die Verwendung von Windows-PDBs für verwalteten Code ist veraltet und wird nur für Legacytools benötigt. Es wird empfohlen, portable PDBs anstelle von Windows-PDBs zu verwenden, da einige neuere Compilerfeatures nur für tragbare PDBs implementiert werden.
Siehe auch
- dotnet-symbol kann zum Herunterladen von Symboldateien für Framework-Binärdateien verwendet werden.
- Windows-Dokumentation zu Symbolen