PIX on Windows

Performance tuning and debugging for DirectX 12 games on Windows

Configuring PIX to access PDBs for CPU Captures

CPU captures in PIX require access to your title’s Program Databases (PDBs) to properly display functions names in callstacks, sampled function analysis and so on.

Generating full PDBs

PIX requires a title’s PDBs to be generated using the /DEBUG:FULL linker switch. PDBs generated with the /DEBUG:FASTLINK linker switch are not sufficient. Note that, depending on the version of Visual Studio you are using, the linker switch /DEBUG specified without the FULL or FASTLINK option, may default to FASTLINK.

If you see functions named “unknown” in the PIX UI, make sure that you are not using FASTLINK PDBs. The following figure shows the /DEBUG:FULL linker option in the Visual Studio UI.

Image pix cpu pdb full


Setting symbol paths

If you’re profiling on the same machine you just built your title on, the path to the PDB that the compiler stored in your title’s modules is typically all PIX needs to locate the PDB. However, there are scenarios in which you’ll need to explicitly tell PIX where your PDBs are located. This situation often occurs if you’re profiling your title on a different machine than the one used to build it. In this case, you can point PIX to your PDBs either by setting the _NT_SYMBOL_PATH environment variable, or by using the PDB Search Paths option on PIX’s Settings page. If you’re using the _NT_SYMBOL_PATH environment variable to configure PIX to find your PDBs, remember to check the Use _NT_SYMBOL_PATH checkbox on the Settings page.

Image pix cpu pdb settings


You may also find it useful to configure PIX so that it can access the PDBs for the Windows OS components supplied by Microsoft. Configuring PIX in this way will give you more complete callstacks in Timing Captures, for example.

To configure PIX to access the Windows OS symbols, add the URL to the Microsoft symbol server (srv*c:\symcache*https://msdl.microsoft.com/download/symbols) as shown in the following screenshot.

Image pix cpu pdb windows pdbs

Reloading symbols

If you make changes to your symbol path settings while a Timing Capture is open, use the Reload Symbols menu option on the Manage Symbols menu in the upper left corner of the capture to cause PIX to re-process the symbols.

Image pix new timing capture manage symbols menu