I do not know a single user of AVIcode products who would not have asked, sooner or later, if AVIcode is different from other .NET profilers. I do not know a single .NET developer who would not ask the same question once introduced to AVIcode.
Indeed, AVIcode is often considered as a troubleshooting tool when it comes to identifying the root cause of application performance and exception issues, and it does have certain amount of functionality to support that usage scenario. It relies on .NET profiling API, it can measure durations of function calls, it can capture application exceptions, it can capture function call parameters, etc. So, one can call it a profiler.
It cannot really measure frequencies of function calls, and it cannot replace memory profilers. Even if it supports sampling, it does it in a very special way. So, as a profiler, it is a somewhat limited tool that does not really stand against more advanced profilers as far as application performance troubleshooting is concerned.
The right question, however, is whether AVIcode should be used as a profiler. And the answer is, of cause, it depends.
Can you use other profilers in production without risking to deeply hurt your application users’ belief in your ability to deliver well performing applications? There is a good chance that any full-blown profiler will eventually affect your application performance in such a way that further production usage will become impossible.
Can you use other profilers to monitor health state of your application? Actually, it’s not a feature of software profilers at all.
AVIcode’s ability to run in production environments and its health monitoring features put it into a different category of software products. It has some features of application profilers, but it serves a different purpose.
In general, when thinking about AVIcode implementation, you should not be thinking about using it in the development environment so much. Yes, you can do it. But there are more advanced profilers you can use there. Instead, think about environments where you would never use profilers. Normally, AVIcode introduces up to 5% CPU overhead, yet it is still capable of collecting a lot of troubleshooting data that you can use to resolve performance and exception issues in your application. Since it is not unusual that you have almost no other troubleshooting information when it comes to the production environments, the details AVIcode can provide may turn out to be really valuable.
On top of that,.NET Management Pack can add a number of nice health monitoring features. Once you install this management pack, it will allow you to implement health monitoring strategy for your .NET application within SCOM 2007 without any serious customizations.
So, is it a profiler? Technically, yes. From the usage standpoint, however, it is an application monitoring tool that is optimized for production environments, and that provides application monitoring and troubleshooting capabilities through the use of profiling API.