Symbol files (PDBs)
Azure DevOps Services | TFS 2018 | TFS 2017
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
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.
To learn more about symbols, see the Windows documentation.