Community
cancel
Showing results for 
Search instead for 
Did you mean: 
blueplant
Beginner
90 Views

which executable should I choose for VTune analyzer?

Jump to solution

Dear expert,

I use VTune analyzer call graph to test an application, I have the source code, pdb file and the .exefile so I can simply select this .exe for my testing, howeverafter installingthis application(use the installer file) on my localit will write some data to the registry key, so I am wondering is it necessary for my toinstall thisapplication first (in order to create some registry key data) and then copy the source file and the pdb file to the .exe directory(after installation, it create a shortcut in the start menu, so I right click it choose property, then choose find target... to find the target .exe file and copy these pdb and source file to this directory), after that, select this exe to test or just simply select the .exe file without installation is also OK?
If so, will I lost some important data which isrelated to the registry key created during the installation process?

Thank you so much!
Best regards,
BluePlant




0 Kudos
1 Solution
robert-reed
Valued Contributor II
90 Views
So you're a little closer to the creaters of the installer than I suspected. As long as you're certain that the .EXE that gets installed is a precise match to the PDB file you're getting (and likewise matching DLL/PDB file pairs for those DLLs of interest), I think you should be set. Regarding answers.

1. I think you can add both modules to your modules of interest list, but for call-graph, I'm not certain it will make any difference. As I think I previously mentioned, modules of interest in VTune Analyzer is mostly for EB Sampling, to be sure those modules get post-processed and displayed even if they might otherwise have been ignored in the tool'sprocessing.

2. Yes, downgrade the instrumentation level in the modules you think are not participating or minimally participating in order to reduce the memory requirements (you can doublecheck this by running just a hot spot analysis with the same workload/environment and see which modules get the majority of events). This will be particularly important in your case since you mentioned the whole application is huge. VTune Analyzer uses a bulk function instrumenter to add the call-graph data collection additions that operates ona module at a time. Reducing instrumentation level in the nonrelevant parts will reduce the overhead but you're still bound to get instrumented (bigger) functions that never get called, wasted space as far as the process you're trying to accomplish is concerned. With VTune Amplifier and VTune Amplifier XE, we've switched to using statistical call-graphs, which gather data by sampling the location of the Instruction pointer and capturing callstack information that can be used later to reconstruct the graph. It uses representative rather than absolute call counts and can't capture wait times but should be able to handle large programs with more ease on the same machine than its predecessor.

View solution in original post

13 Replies
Rob5
New Contributor II
90 Views

BluePlant,

It may depend on the nature of the data that is added to the Windows Registry during the applications install process. However, if your application runs without a formal Windows installation and Windows registry additions, then you can profile your application using analysis tools without having to install. However, the application needs to be able to run in order for the application to be profiled.


Thanks
Rob
Intel Support


blueplant
Beginner
90 Views
Hi Rob,

Thank you for your reply, do you mean it's safer to use the installation version? I also would like to know it I want to do DLL-level Call Graph,Ineed to focus on one DLL which will be loaded by executable at runtime, shall I add this DLL to modules of interest list along with the executable and set the executable's instrumented level to minimal? And is it necessary to set all the other dll's instrumented level to minimal appart from the dll which I'm interested in? So that I can only focus on this particular dll.

I went through the below artical about "Application Fails When Using DLL-level Call Graph Profiling"

http://software.intel.com/en-us/articles/the-problem-of-using-dll-level-call-graph-data-collection/

I'd like to know that if I want toanalyze a.dll which will be loaded by b.exe during the runtime, so I select No application to launch in the Call Graph wizard, addsa.dll to the Modules of Interest list. then according to the solution you give, I need to:


1.Double-click on the activity to open the Advanced Activity Configuration dialog

2.Press the New button to add the b.exe into Application/Module Profiles list

3.Press the Remove button to remove from Application/Module Profiles list (I'm confused does this step mean that I need to delete the a.dll which I added to the modules of interest list before??? If so what's the meaning of"selecting No application to launch in the Call Graph wizard, addsa.dll to the Modules of Interest list"???)

4.Click the Configure... button to open the Configure Call Graph dialog and change the Instrumentation Level of the executable to Minimal (do I also need to change the instrumentation level of other .dlls to minimal appart from a.dll to reduce the overhead???)

My another question is that if I select c.exe as my executable and in order to view the soucre I have to have a c.pdb file, do I have to put c.pdb file to the same folder as c.exe or I can do some configuration in configure-options-directories to make VTune fine c.pdb file itself?

Thanks&Regards

BluePlant

TimP
Black Belt
90 Views
I think you're mixing up multiple subjects here. For call graphing, you don't need .pdb (it won't interfere).

For event based profiling, the .pdb should be found automatically if you put it in the same directory or leave it where it was generated originally. If it's not seen automatically, you should get a popup asking you to navigate to point to it.
blueplant
Beginner
90 Views
Hi,

Thank you for your reply. Sorry, I'm really confused, for call graph Ithink I stillneed line information and symbol information, also referred to as debug information to display function names and source code view, right? So I think .pdb file is also needed for call graph and I always see my function names are messed up (the name looks something like ?AOxbfe80594.??_E...if I right click on it and select view source I am able to see the source code...) Why does it happen?

Meanwhile can you please also answer my other questions in my previous mail? Thank you so much.

Regards,

Blueplant
robert-reed
Valued Contributor II
90 Views
I've been trying to read between the lines and understand at core what it is you're trying to do. Are you interested in the EXE file that you have both in plain and installer form, or are you really interested in the DLL you mentioned briefly? The fact that you discovered the registry setting suggests that you don't own the main, though you may own the DLL, which I think is the focus of your interest. One concern I would immediate have is whether the PDB offsets matched the EXE that comes with the installer.

VTune Analyzer does have a configuration section that enables users to specify where binaries, sources and symbols may be located if they can't be foundby the usual means that Tim suggested. If you are interested in that DLL (for which I assume you also have a PDB file) then normally you would mark it as a module of interest. That's really more important for Event Based Sampling--the instrumented call graph that comes with VTune Analyzer will visit whatever modules that have functions that appear in the call tree. The graph itself can be collected without access to the symbols in the PDB files, but postprocessing to interprete the call graph will require symbols. If you look at the raw function names as carried in the DLL and PDB files, you will see that they are mangled (encoded, to carry type information). Identifying a location within a source file does require symbol and line number information, carried in Windows EXEs and DLLs in PDB files.
blueplant
Beginner
90 Views
Hi Robert,

Thank you for your detailed reply, I really appreciate that.

We have a build team who take care of compling and building the application and they build the application in their place (because we are not able to build the solution in our local, it's a huge application...if I can build the solution in my local I won't have so much trouble...) after the application is successfully built, they give us the pdb, .exe, .dll... along with the source code.

What I am currently doing is installing this application using the installer, then copy the .pdb and source files to the same directory as the .exe file which is generated during the installation process (the .exe version matches the .pdb version and the .exe name matches the .pdb file namewhich the build team gave me...), however I can also test the application without install it because I have all the needed files (.dll,.exe,.pdb and source files) given by the build team, this is why I'd like to know which way is better, to test the .exe given by our build team or test the .exe generated by the installer during the installation process(which I am currently doing, because I'm afraid that I will lost some registry data without installation...), so can you give me some suggestions?

For the dll level call graph my main questions are:

1. Both the dll which I'm interested in and the .exe which will load this dll in the runtime should be added to the modules of interested list, right?

2. If I only interested in one dll is it better to reduce the instrument level to minimalfor all the rest dllsand the .exe which I'm not interested in to reduce the overhead?

Waiting for your reply.

Thanks& Regards

blueplant
robert-reed
Valued Contributor II
91 Views
So you're a little closer to the creaters of the installer than I suspected. As long as you're certain that the .EXE that gets installed is a precise match to the PDB file you're getting (and likewise matching DLL/PDB file pairs for those DLLs of interest), I think you should be set. Regarding answers.

1. I think you can add both modules to your modules of interest list, but for call-graph, I'm not certain it will make any difference. As I think I previously mentioned, modules of interest in VTune Analyzer is mostly for EB Sampling, to be sure those modules get post-processed and displayed even if they might otherwise have been ignored in the tool'sprocessing.

2. Yes, downgrade the instrumentation level in the modules you think are not participating or minimally participating in order to reduce the memory requirements (you can doublecheck this by running just a hot spot analysis with the same workload/environment and see which modules get the majority of events). This will be particularly important in your case since you mentioned the whole application is huge. VTune Analyzer uses a bulk function instrumenter to add the call-graph data collection additions that operates ona module at a time. Reducing instrumentation level in the nonrelevant parts will reduce the overhead but you're still bound to get instrumented (bigger) functions that never get called, wasted space as far as the process you're trying to accomplish is concerned. With VTune Amplifier and VTune Amplifier XE, we've switched to using statistical call-graphs, which gather data by sampling the location of the Instruction pointer and capturing callstack information that can be used later to reconstruct the graph. It uses representative rather than absolute call counts and can't capture wait times but should be able to handle large programs with more ease on the same machine than its predecessor.

View solution in original post

blueplant
Beginner
90 Views
Hi Robert,

Thank you for your reply, it does help me a lot, I test an application built by managed. unmanaged an native code will .NET classes and all native modules be more reasonable for mixed code testing instead of all .net class profile?

I installed vtune performance analyzer 9.1.002 maybe, when I use call graph+.net profile to test the sample which is under the installation folder:
C:\Program Files\Intel\VTune\Examples\C#2003
I found that in the configure call graph screen when I select vtune_csharp_example.exe then cllick functions...button, in the function selection screen, only one function is present: good_loop, I want to know why another function(bad_loop) is not coming in the function selection list?

Meanwhile will be anyone help me on another question I raised in Mar 16th regarding the .exe is not able to be launched by vtune:

http://software.intel.com/en-us/forums/showthread.php?t=81486

Because it really disturbs me a lot.

Thank you so much.

Waiting for your reply.

Best Regards
blueplant
Beginner
90 Views
Hi Robert,

Do you have any ideas on this? Any suggestions are appreciated, I really need your help.

Waiting for your reply.

Thanks & Best Regards

Blueplant
robert-reed
Valued Contributor II
90 Views
Sorry about the delayed response. I had a presentation to prep for and deliver on Friday--all my energy went to that.

Regarding your questions, by 9.1.002 do you mean VTune Analyzer 9.1 Update 2? That particular release is just over two years old, so there's likely to be lots of bugs (both discovered and fixed in subsequent releases). In general, while VTune Analyzer provides support for .NET, it does it at arm's length, working through the intermediary of the .NET API to do data collection. Whereas with native code VTune Analyzer can work directly with machine-level assembly code function realizations and might be able to do a better job. Of course, adding native code in a managed environment has its own share of complications, and given the size you describe for the application you're working on, that may introduce its own set of scale problems. I couldn't give you a recommendation without knowingmore about your architecture, which you may not want to share and I certainly don't have the time at the moment to absorb.

I haven't played with the C# example you mentioned, so I have no quick reply.I'm still buried with other work, but maybe I can find some time to take a look.
blueplant
Beginner
90 Views
Hi Rob,

Sorry for disturbing you, I know you are quite busy, I really appreciate your time and effort.

I'm using Intel VTune Performance Analyzer 9.1

Build:210

Yep, please get back to me when you are free, because all your suggestions are very very important to me.thank you so much.

Have a nice day.
Best Regards,
Blueplant

robert-reed
Valued Contributor II
90 Views

You're not disturbing me--part of my job is helping to answer questions on the forum--but I have not had a chance to look at that example, so I can't offer any advice at the moment why one C#loop shows up and the other does not. Beyond that, I'm trying to understand which questions over several forum posts have not yet been answered.

There was this one:
my function names are messed up (the name looks something like ?AOxbfe80594.?

That's an RVA, Relative Virtual Address, an indication that symbols for that function or module were not accessible. It's what the tool uses when symbols are unavailable.

Then there was this oneabout auto launching the .EXE file. Kirill has responded with a request for a reproducer, and suggested that you try VTune Amplifier XE 2011 Update 2, the latest release of the new architecture. However, the version you refer to hereis VTune Analyzer 9.1 Update 2 (build 210), which as I mentioned previously is two years old. If you're not interested in upgrading to VTune Amplifier XE, there are several newer versions of the VTune Analyzer 9.1 that you may be able to download

Then there was this one, which is just a reshout of a previous question that, rather than being sent as a continuation of the previous thread, added yet another thread to the confusion. Are these new licenses that you've not been able to utilize? Or are they old licenses for VTune Analyzer 9.1 that might well be expired by now? (Please don't answer that, at least in detail--this was meant as a rhetorical question, not a request that you divulge your licenses for the entire forum.)

Plenty of Intel people are on the forums and are here to help, but we also have a lot of users with intricate questions, so clarity in asking questions is as highly valued as clarity in answering them. Regurgitating old questions in new threads to compensate for a slow response usually only adds to the confusion.

blueplant
Beginner
90 Views
Hi Rob,

Thank you for your reply. I really appreciate your time and effort.

Because I had an very import presentation last Thusday, I have to use VTune to make a demo and show the analyzing result, you knowI neverplayed VTune beforeso I wasso scared and hopless... anyway my presentation was not so bad,I reallywant to say many thanks to all of you who keepsupporting meand I believe you definitely made a perfect presentation ^_^

I'll keep working on VTune as my part of my daily job in the future, once I need your further support I will get back to you, thank you for your adviceI will be more careful next time when adding thread, asking questions to avoid confusion.

Thank you so much.

Best Regards,

Blueplant
Reply