Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Steven_Katz
Beginner
92 Views

VTune Call Graph did not list a function that was called

I changed some of my code to use a Windows Critical Section instead of a Windows Mutex to conserver processor time.
I ran the re-built application through the MSVC debugger and verified that I call EnterCriticalSection.
(I even have a screen snapshot showing the call.)
But in the VTune Call Graph, the display still lists WaitForSingleObject where I call EnterCriticalSection.
And EnterCriticalSection does not appear anywhere in the Call Graph Run Function Summary.
These windows calls are in Kernel.dll which is configured to export its functions.
Do you have any suggestions for me?
Thanks.
VTune version9.1, build 210
0 Kudos
1 Reply
Peter_W_Intel
Employee
92 Views

Quoting - Steven Katz
I changed some of my code to use a Windows Critical Section instead of a Windows Mutex to conserver processor time.
I ran the re-built application through the MSVC debugger and verified that I call EnterCriticalSection.
(I even have a screen snapshot showing the call.)
But in the VTune Call Graph, the display still lists WaitForSingleObject where I call EnterCriticalSection.
And EnterCriticalSection does not appear anywhere in the Call Graph Run Function Summary.
These windows calls are in Kernel.dll which is configured to export its functions.
Do you have any suggestions for me?
Thanks.
VTune version9.1, build 210


Hi Steven,

First at all, please check if you built your application with compiler option "/Zi", and linker options "/DEBUG", "/FIXED:NO" (generate relocatable section).

I have a simple example on handle which uses EnterCriticalSection & LeaveCriticalSection, after doing call graph data collection - it seems that RtlEnterCriticalSection and RtlLeaveCriticalSection are displayed in my call graph result.

You can modify call graph activity, and review "Configure Call Graph" dialog. Select your module then click "Functions..." button, "Function Selection" dialog should display all instrumented/un-instrumented functions in your module, EnterCriticalSection/LeaveCriticalSection are unchecked-Propbably these functions are imported stub functions, so willnot be instrumented. Instead RtlEnterCriticalSection/RtlLeaveCriticalSection in ntdll.dllwere instrumented (checked),if you select ntdll.dll module then click "Functions..." button on "Configure Call Graph" dialog.

If you have other concerns about your app, please go to https://premier.intel.com to submit issue with your app.

Regards, Peter

Reply