Debug with symbols in Visual Studio

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.

Symbol servers enable debuggers to automatically retrieve the correct symbol files without knowing product names, build numbers or package names. To learn more about symbols, read the concept page; to publish symbols, see this page. To use symbols in WinDbg, see this page.

Add the symbol server to Visual Studio

To debug with symbols, select and add the Azure DevOps Services symbol server to your Visual Studio environment using the Tools->Options->Debugger->Symbols page.

Add Azure DevOps Services Symbol Server in VS Debugger

In the Connect to Azure DevOps Services Symbol Server dialog, select the organization to which the symbols have been published and the corresponding user identity that has access to this organization.

Connect to Azure DevOps Services Symbol Server

Click Connect in the above dialog. The Azure DevOps Services Symbol Server is now remembered by Visual Studio. When a debugging session begins, Visual Studio will be able to get symbols from Azure DevOps Services.

Add Azure DevOps Services Symbol Server in VS Debugger

Debugging optimized modules

If you're debugging an optimized module (e.g. something that was built with the Release configuration) and you haven't changed the default "Enable Just My Code" setting in Options, Visual Studio will not automatically fetch symbols for the optimized module. If this is the case, the Modules window will have a warning message.

To debug the module, you can either:

  • Open the Modules window, right-click the module, and choose "Load Symbols" (recommended)
  • In Options > Debugging > General, uncheck "Enable Just My Code"

We recommend checking "Enable Source Link support" in Options > Debugging > General (it's checked by default).

If you choose to enable source server support, please consider the security implications before doing so.

If you're using Portable PDBs, Source Link cannot currently authenticate to private source repositories (like Azure DevOps Services), and thus will not work.