Share via


Símbolos

Os símbolos são úteis para depuração e outras ferramentas de diagnóstico. O conteúdo dos arquivos de símbolos varia entre idiomas, compiladores e plataformas. Em um alto nível, símbolos são um mapeamento entre o código-fonte e o binário produzido pelo compilador. Esses mapeamentos são usados por ferramentas como Visual Studio e Visual Studio Code para resolver informações de número de linha de origem ou nomes de variáveis locais.

A documentação do Windows sobre símbolos contém informações mais detalhadas sobre símbolos para Windows, embora muitos dos conceitos também se apliquem a outras plataformas.

Saiba mais sobre . Formato PDB portátil da NET

O .NET Core introduziu um novo formato de arquivo de símbolo (PDB) - o PDB portátil. Ao contrário dos PDB tradicionais, que são apenas para Windows, os PDB portáteis podem ser criados e lidos em todas as plataformas.

O que é um APO?

Um arquivo PDB é um arquivo auxiliar produzido por um compilador para fornecer outras ferramentas, especialmente depuradores, informações sobre o que está no arquivo executável principal e como ele foi produzido. Por exemplo, um depurador lê um PDB para mapear foo.cs linha 12 para o local executável certo para que ele possa definir um ponto de interrupção. O formato PDB do Windows existe há muito tempo e evoluiu de outros formatos de símbolos de depuração nativos que eram ainda mais antigos. Começou a sua vida como um formato para programas nativos (C/C++). Para a primeira versão do .NET Framework, o formato Windows PDB foi estendido para oferecer suporte ao .NET.

O formato PDB portátil foi introduzido no .NET Core e é usado por padrão ao direcionar o .NET. Ao direcionar o .NET Framework, você pode habilitar símbolos PDB portáteis especificando <DebugType>portable</DebugType> em seu arquivo de projeto. O formato PDB portátil baseia-se no formato de metadados ECMA-335. Para obter mais informações, consulte PDB portátil v1.0: especificação de formato. As ferramentas de diagnóstico podem usar a System.Reflection.Metadata biblioteca para ler arquivos PDB portáteis (por exemplo, consulte System.Reflection.Metadata.Document).

Use o formato PDB correto para o seu cenário

Nem PDBs portáteis nem PDBs do Windows são suportados em todos os lugares. Para decidir qual formato usar, considere onde seu projeto será usado e depurado. Se você tiver um projeto que deseja poder usar e depurar em ambos os formatos, poderá usar diferentes configurações de compilação e compilar o projeto duas vezes para oferecer suporte a ambos os tipos de consumidor.

Suporte para PDBs portáteis

Um PDB portátil pode ser lido em qualquer sistema operacional e é o formato de símbolo recomendado para código gerenciado. No entanto, há uma série de ferramentas e aplicativos legados onde eles não são suportados:

  • Aplicativos destinados ao .NET Framework 4.7.1 ou anterior: impressão de rastreamentos de pilha com mapeamentos de volta para números de linha (como em uma página de erro ASP.NET). O nome dos métodos não é afetado, apenas os nomes de arquivo de origem e números de linha não são suportados.

  • Ao usar descompiladores .NET, como ildasm ou refletor .NET, você não verá mapeamentos de linha de origem ou nomes de parâmetros locais.

  • As versões mais recentes do DIA e as ferramentas que usam o DIA para ler símbolos, como o WinDBG, suportam PDBs portáteis, mas as versões mais antigas não.

  • Pode haver versões mais antigas de criadores de perfil que não suportam PDBs portáteis.

Para usar PDBs portáteis em ferramentas que não os suportam, você pode usar Pdb2Pdb, que converte entre PDBs portáteis e PDBs do Windows.

Suporte para PDBs do Windows

Os PDBs do Windows só podem ser escritos ou lidos no Windows. O uso de PDBs do Windows para código gerenciado é obsoleto e só é necessário para ferramentas herdadas. É recomendável que você use PDBs portáteis em vez de PDBs do Windows, pois alguns recursos de compilador mais recentes são implementados apenas para PDBs portáteis.

Consulte também