The Windows Performance Toolkit (WPT) has been updated with the release of Windows 10 and I’ve just upgraded. There seem to be some minor improvements, but I noticed pretty quickly that I was unable to load symbols in Windows Performance Analyzer (WPA). This is not a new problem, but I had forgotten how to fix it. Here’s an article for future me and anyone else having this problem.
BTW, Bruce Dawson is the internet’s performance guru and has written a similar article that you may want to skip to. In this article, we conclude where his article begins.
How are Symbols Loaded?
The first symptom of this problem is that when I load symbols, WPA very quickly goes through all binaries and claims that symbol load is complete. I already have some cached symbols so I see symbols for some binaries, and ? marks for others.
A quick look at the WPA Diagnostic Console shows us the crux of the problem:
DBGHELP: SymSrv load failure: symsrv.dll
We know that applications access symbol functionality via the DbgHelp API and WPA is no exception. If we take a look using Process Monitor, we see that WPA is loading dbghelp.dll from the system directory. In turn, dbghelp.dll appears to load symsrv.dll from the same directory, which fails.
At this point, we have enough information to solve the problem. You should already have Debugging Tools for Windows installed. If not, the aforementioned article by Bruce Dawson might be a quicker fix.
The solution is simple:
- Figure out if you are using the x86 or x64 version of the Windows Performance Toolkit.
This is easy on x86 builds of Windows. On x64 builds, you can check the Task Manager for the *32 tag. If it’s not there, then you’re running the x64 version.
Note that WPT always installs to Program Files (x86) regardless of architecture.
- Copy the dbghelp.dll and symsrv.dll files from the correct debugger directory to the Windows Performance Toolkit directory. On my system, the relevant directories are:
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64 and C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit
- Restart Windows Performance Analyzer so that the correct version of dbghelp.dll is picked up.