Analyzers
Talk to fellow users of Intel Analyzer tools (Intel VTune™ Profiler, Intel Advisor)
4995 Discussions

Cannot get "all functions" instrumentation in v9.0

christopher_kush
Beginner
866 Views

I'm attempting to profile a C++ DLL on Vista/x64. I am building the DLL optimized, with debug information enabled. However, when I attempt to run a Call Graph activity in VTune 9.0, only "exports instrumentation" is performed.

If I right-click on the activity and select "Modify Collectors", I can see my DLL listed, with a "Yes" in the "Debug Info" column.

However, the "Module Type" value says "System", and this is apparently preventing me from selecting "All Functions" instrumentation.

Our project also supports x86 platforms; when my colleagues running on Vista/x86 bring up the "Modify Collectors" dialog, the DLL of interest is listed as being a "User DLL".

What causes VTune to decide a module is "System" and not "User"?

Best regards,

Chris

0 Kudos
5 Replies
aokunev
Beginner
866 Views
Hi Chris

VTune instrumentation engine decides a module is system if its preferred base address belongs to system address range.

Right now it supports singe system address range and it is defined as 0x60000000 7FFFFFFF FFFFFFFF for x64. Probably while linking your image you've changed default base address.

Is it possible for your project to use default VS linker settings temporarly while profiling with VTune?

regards, Andrei
0 Kudos
christopher_kush
Beginner
866 Views

Andrei,

Many thanks! I have been able to get function-level profiling going by setting "Linker->Advanced->Base Address" to 0x00000000_20000000 in Visual Studio and creating a new activity in VTune. (I tried deleting VTune's cache, but it still remembered my DLL as being a "System" DLL. Exiting VTune, re-launching it and creating the new activity seemed to make VTune forget its earlier analysis.)

Also, I think we areusing the default VS linker settings (there is no /BASE directive in the command line, although there is a /SUBSYSTEM:WINDOWS). When I used LINK.EXE to inspectourDLL, the base address was given as 0x00000001_80000000, which would map to the "system" range according to your numbers. This is with VS2005 version 8.0.50727.867 (vsvista.050727-8600).

Again, thanks for solving this.

Chris

0 Kudos
aokunev
Beginner
867 Views
Hi Chris

We've included the fix for this problem to VTune 9.0 update 3.The new system ranges are 0x58000000-0xFFFFFFFF for IA32 and two ranges - 0x0000000070000000-0x000000007FFFFFFF and 0x000007FF50000000-0x000007FF7FFFFFFF for Intel 64.

So we can recommend you to evaluate VTune 9.0 Update 3.

regards, Andrei

0 Kudos
hax666
Beginner
867 Views
It would be MUCH easier if advanced options just had "Force as User module" option.
0 Kudos
scott-kell
Beginner
867 Views
Agreed! This bit me on V9.0 Build 719 evaluation copy - lost 4 hours of my life that I'll never get back pulling my hair out over this until I stumbled into this post.... :-)
0 Kudos
Reply