Closed galop1n closed 5 years ago
Optick uses DbgHelp.dll for symbol resolving. Unfortunatelly Microsoft haven't upgraded DbgHelp.dll that they supply with Windows and Windows SDK yet. As a temporary workaround you could copy the latest version of DbgHelp.dll from the Visual Studio folder next your game executable. You need at least "10.0.17625.1000" product version (the more - the better :)): The similar problem is discussed here: https://developercommunity.visualstudio.com/content/problem/36255/chromes-base-unittests-fails-with-vs-2017-due-to-s.html
You could also disable callstacks collection if you don't need them - just untick "Autosampling" and "SysCalls" options in the menu before taking a capture:
Please let me know whether using new version of DbgHelp.dll fixes the problem once you have a chance to try it.
I am planning to move Symbol Resolving from the Runtime to the GUI side soon - check https://github.com/bombomby/optick/issues/54 for more details. It will allow to resolve symbols on demand which will significantly improve performance of the "resolving" step. It will also allow you to provide a custom path to the DbgHelp.dll so you don't need to keep this dll next to your executable.
Closing for now. Let me know if the problem still occurs after copying the new DbgHelp.dll.
When your application link with "/DEBUG:FASTLINK" instead of "/DEBUG:FULL", Optick address resolving step takes a lot more time, but at the end, does not resolve any function names in the flame graph. Switching to "/DEBUG:FULL" and Optick is able to resolve them just fine, and faster.
An option to see the loaded or missing symbols and proceed with a reload would be useful also, like in Visual Studio.