Symbol files (PDBs)

Azure DevOps Services | TFS 2018 | TFS 2017

Note

A symbol server is available with Azure Artifacts in Azure DevOps Services and works best with Visual Studio 2017 Update 4 or later. Team Foundation Server users and users without the Azure Artifacts extension can publish symbols to a file share using a build task.

To debug compiled executables, especially executables compiled from native code languages like C++, you need symbol files that contain debugging information. These files generally have the PDB (program database) extension.

What's in a symbol file

Symbols contain a set of useful debugging information, including:

  • publics and exports
  • global symbols
  • local symbols
  • type data
  • source indexes
  • line numbers

Publishing symbol files

To allow your users to debug your application, you need to publish your symbol files to a Symbol Server, like the one provided by Azure Artifacts in Azure DevOps Services.

Consuming symbol files

Once you've published your symbol files, users can use them in the debugging process in Visual Studio or WinDbg. The debugger will find the appropriate symbols using a unique ID that identifies the symbols associated with the binary.

Using symbols with NuGet packages

If you publish your application's executables via NuGet packages, there are two ways to share symbols with your users. NuGet can make symbols packages, which are denoted by a .snupkg extension, but these packages are only needed if you're publishing symbols to SymbolSource.org or another external symbol host.

Sharing private symbols with Symbol Server

If you're publishing packages to Azure Artifacts, there's no need to use NuGet symbols packages. Instead, configure the Index Sources and Publish Symbols task in Team Build using the walkthrough.

Sharing public symbols on SymbolSource.org

If you're publishing your packages to NuGet.org, you can publish corresponding symbols packages to SymbolSource.org. If you're using the NuGet or .NET Core tasks in Team Build, check Create symbols package to create a symbol package when you pack your executables.

Learn more

To learn more about symbols, see the Windows documentation.