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

Functions of unmanaged code are not detected in call graph.

amitm02
Beginner
382 Views
Hi,
While analyzing mixed managed/unmanaged code via call graph a , functions in the unamanged code parts do not appear in the results. Application X we would like to analyze, appears only as "X.jit", and contain only the managed functions.

All seems to work well for the "sampling" analyze.

Thanks
Amit
0 Kudos
5 Replies
Peter_W_Intel
Employee
382 Views
Quoting - amitm02
Hi,
While analyzing mixed managed/unmanaged code via call graph a , functions in the unamanged code parts do not appear in the results. Application X we would like to analyze, appears only as "X.jit", and contain only the managed functions.

All seems to work well for the "sampling" analyze.

Thanks
Amit

Did you use Call Graph Wizard->.NET* profiling->Executable->Application to Launch->All .NET* classes and all native modules?

The call graph report should display your.exe.jitas well asother native modules (such as kernel32.dll, gdi32.dll, etc). Can't you find your interest of DLL modules in the result?

You can verify this problem with vtune example first - Vtuneexamplesc#2003binreleasevtune_csharp_example.exe, and compare results with your program's.

If the problem persists on, please submit an issue with test case (your private data, modules with PDB files) to https://premier.intel.com for investigating.

Thanks, Peter
0 Kudos
amitm02
Beginner
382 Views

Did you use Call Graph Wizard->.NET* profiling->Executable->Application to Launch->All .NET* classes and all native modules?

The call graph report should display your.exe.jitas well asother native modules (such as kernel32.dll, gdi32.dll, etc). Can't you find your interest of DLL modules in the result?

You can verify this problem with vtune example first - Vtuneexamplesc#2003binreleasevtune_csharp_example.exe, and compare results with your program's.

If the problem persists on, please submit an issue with test case (your private data, modules with PDB files) to https://premier.intel.com for investigating.

Thanks, Peter

Hi Peter,
Thanks for replaying.
Yes, i use the use call graph wizard as you indicated.
To be more clear, the call graph shows all the application .NET managed functions. It also show the native unmanged functions of other DLL's the applications use. What it does not shows, is the native unmanged functions that at staticly linked into the application executable.

Yours
Amit
0 Kudos
Peter_W_Intel
Employee
382 Views
Quoting - amitm02

Hi Peter,
Thanks for replaying.
Yes, i use the use call graph wizard as you indicated.
To be more clear, the call graph shows all the application .NET managed functions. It also show the native unmanged functions of other DLL's the applications use. What it does not shows, is the native unmanged functions that at staticly linked into the application executable.

Yours
Amit

Hi Amit:

Thanks for more detail info!

It seems that call graph result displays the native unmanaged functions of other DLL's the application use. For your application executable, it should be built with "/Zi" compiler option, with "/DEBUG", "/Fixed:no" linker options. Thus, the binary has debug info, and it is relocatable.

You can use Call Graph Configure to check if your interest of functions has beinstrumented successfully (try to change instrumentation type from "Full functions" to "Custom" then look into...not really want to change it, you can cancel it after verifying!)

You can use "Reply is Private"and use"AddFiles", attach application/PDB filesand tell me your interest of functions- if you wantme to help verifying.

Regards, Peter
0 Kudos
amitm02
Beginner
382 Views

Hi Amit:

Thanks for more detail info!

It seems that call graph result displays the native unmanaged functions of other DLL's the application use. For your application executable, it should be built with "/Zi" compiler option, with "/DEBUG", "/Fixed:no" linker options. Thus, the binary has debug info, and it is relocatable.

You can use Call Graph Configure to check if your interest of functions has beinstrumented successfully (try to change instrumentation type from "Full functions" to "Custom" then look into...not really want to change it, you can cancel it after verifying!)

You can use "Reply is Private"and use"AddFiles", attach application/PDB filesand tell me your interest of functions- if you wantme to help verifying.

Regards, Peter
H Peter,
I'm using all the compiler options you've mention. also in the "Custom" menu you've mention i can see the native functions and it's state that they will be instrumented OK. Alas, they do not appear in the analysis results.

p.s i could not find the "Reply is Private" option. attaching applications files is problematic due to company policy. I'm aware that it make it harder to help me, but i would hope for any suggestions...

Yours,
amit
0 Kudos
Peter_W_Intel
Employee
382 Views
Quoting - amitm02
H Peter,
I'm using all the compiler options you've mention. also in the "Custom" menu you've mention i can see the native functions and it's state that they will be instrumented OK. Alas, they do not appear in the analysis results.

p.s i could not find the "Reply is Private" option. attaching applications files is problematic due to company policy. I'm aware that it make it harder to help me, but i would hope for any suggestions...

Yours,
amit

Hi Amit,

Unfortunately I realizedit could bea limitation in the product. Call graph.NET profiling in a mixed module can't display the results for native code, only display the results for jit code.

As a workaround, the user can move native code into a separated DLL, you know that call graph can display performance data inyour all native DLLs:-)

Regards, Peter

0 Kudos
Reply