Dela via


Symboler

Symboler är användbara för felsökning och andra diagnostikverktyg. Innehållet i symbolfilerna varierar mellan språk, kompilatorer och plattformar. På hög nivå är symboler en mappning mellan källkoden och binärfilen som skapas av kompilatorn. Dessa mappningar används av verktyg som Visual Studio och Visual Studio Code för att matcha information om källradsnummer eller lokala variabelnamn.

Windows-dokumentationen om symboler innehåller mer detaljerad information om symboler för Windows, även om många av begreppen även gäller för andra plattformar.

Läs mer om . NET:s portabla PDB-format

.NET Core introducerade ett nytt symbolfilformat (PDB) – det bärbara PDB-formatet. Till skillnad från traditionella PDF-filer, som endast är Windows, kan bärbara PDF-filer skapas och läsas på alla plattformar.

Vad är ett PDB?

En PDB-fil är en extra fil som skapats av en kompilator för att tillhandahålla andra verktyg, särskilt felsökningsprogram, information om vad som finns i den huvudsakliga körbara filen och hur den producerades. Ett felsökningsprogram läser till exempel ett PDB för att mappa foo.cs rad 12 till rätt körbar plats så att den kan ange en brytpunkt. Windows PDB-formatet har funnits länge och utvecklats från andra inbyggda felsökningssymbolformat som var ännu äldre. Det började sitt liv som ett format för interna (C/C++)-program. För den första versionen av .NET Framework utökades Windows PDB-formatet för att stödja .NET.

Det bärbara PDB-formatet introducerades i .NET Core och används som standard när du riktar in dig på .NET. När du riktar in dig på .NET Framework kan du aktivera portabla PDB-symboler genom att <DebugType>portable</DebugType> ange i projektfilen. Det bärbara PDB-formatet baseras på ECMA-335-metadataformat. Mer information finns i Bärbar PDB v1.0: Formatspecifikation. Diagnostikverktyg kan använda System.Reflection.Metadata biblioteket för att läsa bärbara PDB-filer (till exempel se System.Reflection.Metadata.Document).

Använd rätt PDB-format för ditt scenario

Varken bärbara PDF-filer eller Windows-PDF-filer stöds överallt. Om du vill bestämma vilket format som ska användas bör du tänka på var projektet ska användas och kopplas från. Om du har ett projekt som du vill kunna använda och felsöka i båda formaten kan du använda olika byggkonfigurationer och skapa projektet två gånger för att stödja båda typerna av konsumenter.

Stöd för bärbara PDF-filer

En bärbar PDB kan läsas på alla operativsystem och är det rekommenderade symbolformatet för hanterad kod. Det finns dock ett antal äldre verktyg och program där de inte stöds:

  • Program som riktar sig till .NET Framework 4.7.1 eller tidigare: skriva ut stackspårningar med mappningar tillbaka till radnummer (till exempel på en ASP.NET felsida). Namnet på metoderna påverkas inte, endast källfilnamnen och radnumren stöds inte.

  • När du använder .NET-dekompilerare som ildasm eller .NET-reflektor visas inte källradsmappningar eller lokala parameternamn.

  • De senaste versionerna av DIA och verktyg som använder DIA för att läsa symboler, till exempel WinDBG, stöder bärbara PDF-filer, men äldre versioner gör det inte.

  • Det kan finnas äldre versioner av profilerare som inte stöder bärbara PDF-filer.

Om du vill använda bärbara PDF-filer på verktyg som inte stöder dem kan du använda Pdb2Pdb, som konverterar mellan bärbara PDF-filer och Windows-PDF-filer.

Stöd för Windows-pdf-filer

Windows-PDF-filer kan bara skrivas eller läsas i Windows. Att använda Windows-pdf-filer för hanterad kod är föråldrat och behövs bara för äldre verktyg. Vi rekommenderar att du använder bärbara PDF-filer i stället för Windows-PDF-filer, eftersom vissa nyare kompilatorfunktioner endast implementeras för bärbara PDF-filer.

Se även