Compartilhar via


Símbolos

Símbolos são úteis para debugging e outras ferramentas diagnósticas. O conteúdo dos arquivos de símbolo varia entre idiomas, compiladores e plataformas. Em um alto nível, os 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 o formato PDB portátil do .NET

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

O que é um PDB?

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 a linha 12 do foo.cs para o local executável correto, a fim de definir um ponto de interrupção. O formato PDB do Windows existe há muito tempo e evoluiu de outros formatos de símbolo de depuração nativos que eram ainda mais antigos. Ele iniciou sua vida útil como um formato para programas nativos (C/C++). Para a primeira versão do .NET Framework, o formato PDB do Windows foi estendido para dar suporte ao .NET.

O formato Portable PDB 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 seu cenário

Não há suporte para PDBs portáteis nem PDBs do Windows em todos os lugares. Para decidir qual formato usar, considere onde seu projeto será utilizado e analisado. Se você tiver um projeto que deseja poder usar e depurar em ambos os formatos, poderá usar configurações de build diferentes e criar o projeto duas vezes para dar 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á várias ferramentas e aplicativos herdados em que eles não têm suporte:

  • Aplicativos direcionados do NET Framework 4.7.1 ou anterior: imprimir 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 os números de linha não têm suporte.

  • Ao usar descompiladores do .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 ferramentas que usam DIA para ler símbolos, como WinDBG, dão suporte a PDBs portáteis, mas versões mais antigas não.

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

Para usar PDBs portáteis em ferramentas que não dão suporte a eles, 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 gravados 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 mais recentes do compilador são implementados apenas para PDBs portáteis.

Consulte também