I'm working analyzing the performance using 4.0.547.70 in Vista-64 on a VB.Net .Net 2.0 application. I am running thread time sampling and there is one thread of interest that is doing all the processing. When I look at the results, it is showing most that half the time in Unknown Code. That is really not very helpful to have such a high percentage of the time obscured like that. Is it possible to find out what the program is doing during that time?
Thanks,
Geoff
Hi Geoff,
This actually most likely means that at these moments there either were not managed frames on stack (i.e. native code was executed) or there were managed frames, but the currently executing function is native and has FPO on, so the stack walker couldn't go up and figure out the managed stack. We will change wording to "[Native or optimized code]" in future builds.
WBR, Oleg
Hi,
Thanks for the clarification on the meaning; updating the wording would help a lot.
Is it possible to figure out what the code is doing during that ~50% of the time? Knowing it's probably in native code is one thing, but it's hard to optimize a project that's spending half it's time in native code if you don't have some idea what it's trying to do. Can I see this in a different tracing mode maybe?
Thanks,
Geoff
Hi Geoff,
Since dotTrace is currently a purely managed profiler, we don't show what native code is executed. We have plans to add native profiling support later, but currently we don't have it. Actually since these are most likely purely native call stacks, this may happen if you have a native host which runs your managed code and it might not be relevant to your application.
WBR, Oleg