When an executable is runin VTune to obtain the performance summary the hot-spots section lists the function names.
So basically the problem is that:
When the executable makes a call to an .lib (static) file the function names are listed. When the executable makes a call to an .dll file (dynamic) the function names are sometimes listed and on many other occassions not listed (In place of functionnames we have addresses).
It is understanable if thisis always true. However the behaviour is unpredictable: sometimes with the DLL the functionnames get displayed, sometimes not. On rare occassions this behaviour has also happened when a LIB filewas used. Is there a wayto make surethefunction names are always listed.
Basically the entire set of functions are not getting displayed. One or two functions getting inlined is possible not the entire code. Secondly the VTune results in some cases display the function names in the hot spots list even in Release mode build with DLLand in other extreme cases do not display the function names even for Debug mode build for aLIB (Release + exe + DLL <-----> Debug + exe + LIB).The question is about this unpredictable behaviour and not about function inlining.
Well, another reason for a function to not appear in the hotspot list might be that it didnt collect enough samples because of the statistical method and all the samples were in the callee function. Why is the difference in dll-lib, it needs closer investigation of the function.
The only reason for such behavior I could guess is incomplete debug info generated by the compiler.
Could you try the 11.1 Update 6 compiler version?
Note: PDB files should not be getting moved after the compilation.
Also, please make sure you are using the VTune 9.1 Update 8.
I'd be interested to know if anybody else had the similar problems as well.
VTune doesn't have any specific settings, except probably the Microsoft Symbol Server, which can be used to resolve names of system functions. Although, it doesn't help much with user code, until it's getting called from the system (any registered callbacks or .Net specific asynchronous mechanisms).