Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
13 Views

some of my functions are not in the call graph

Jump to solution
I used vtune to create a call graph for my application. As you can see in the picture, some of the functions called in the main (source code in the right window) are not shown in the call graph (left window) and also some of things that are listed in the call graph are not in the main (right window).

vtune window

Thanks for any sugestion.
0 Kudos

Accepted Solutions
Highlighted
Employee
13 Views
That is great! Call graph can work on your side.

A1. Call graph can work with applications built with Release mode, but shouldaddcompiler option "/Zi", linker options "/DEBUG", "/Fixed:no". Fordisabling in-line functions, read this article

A2. Please refer to this article

Regards, Peter

View solution in original post

0 Kudos
7 Replies
Highlighted
Employee
13 Views
Hi,

I can't seethis picture, please verify.

If some of functions called by main(), but not shown in call graph report window - probably
1) Your called functions are "inline", please use disabling optimization to rebuild and retry.
2) Your called functionwere not executed.

Regards, Peter
0 Kudos
Beginner
13 Views
Hi,
Here is the image location: http://www.imagechicken.com/uploads/1275389830077720300.png

Please note that in the main function I have "cipher()" but it is not listed in the call graph window.
I also have to say that the code is an AES example which is located at http://www.hoozi.com/post/829n1/advanced-encryption-standard-aes-implementation-in-c-c-with-comments...

As you can see, the function is not inlined and I checked with a simple printf() to check that the function is actually running.

Regards,
0 Kudos
Highlighted
Beginner
13 Views
You were right. My first run was in release mode and as you said I rebuild run again in debug mode. It is now working.

Two more question:
1- Debug mode is not of my interest in performance analysis. How can I disable the inlining in release mode?

2- When I run the counter monitor activity, I get this:
"No data to display for selected couters. Either no counters have been selected or there is no data available for the selected counters. Try selecting additional counters or run the activity again to collect new data.

I tried running the counter monitor again as it is stated but get the same message.
Considering this "Either no counters have been selected or there is no data available for the selected counters.", where should I select counters?

Thanks,
0 Kudos
Highlighted
Employee
14 Views
That is great! Call graph can work on your side.

A1. Call graph can work with applications built with Release mode, but shouldaddcompiler option "/Zi", linker options "/DEBUG", "/Fixed:no". Fordisabling in-line functions, read this article

A2. Please refer to this article

Regards, Peter

View solution in original post

0 Kudos
Highlighted
Beginner
13 Views
1- I am using VS2008 but the article is for intel compiler. Anyway, I set three options as you mentions: "/Zi", "/DEBUG" and "/Fixed:no". But when I check the inlining optimization option I only have these options:

default
Only __inline (/Ob1)
Any suitable (/Ob2)

I tested all three but in the call graph still there is no "cipher()".

2- The article is for windows 2000. Many registry keys that are listed are not available in my XP. But I found this artivle useful http://software.intel.com/en-us/articles/intel-vtune-performance-analyzer-for-windows-counter-monito...
0 Kudos
Highlighted
Employee
13 Views
I have no idea for Microsoft* C/C++ compiler to disable inline with using optimization options.

For using counter monitor - try Perfmon.exe first.
0 Kudos
Highlighted
Beginner
13 Views
Thanks for your advice. I found this article that explains the optimization switches in VS. Hope this will be usefull for others too

Developing optimized code with microsoft visual c++6.0
http://msdn.microsoft.com/en-us/library/aa260969%28VS.60%29.aspx
0 Kudos