Counters is a Mono API for flexible statistics collection and is used to track different events inside the JIT.
You would typically register an address with the mono_counters_register routine and increment the counters from your application as you go. At the end of the program you would call mono_counters_dump which will display all the registered counters.
If you need more complicated counter computation, a function can be provided instead of an address. In that case the MONO_COUNTER_CALLBACK flag must be ored in the type request.
The types that can be rendered are:
MONO_COUNTER_INT MONO_COUNTER_UINT MONO_COUNTER_WORD MONO_COUNTER_LONG MONO_COUNTER_ULONG MONO_COUNTER_DOUBLE MONO_COUNTER_STRING
To organize the output, you register also a section where the counter will be displayed, or one of the following values when you register your counter:
MONO_COUNTER_JIT MONO_COUNTER_GC MONO_COUNTER_METADATA MONO_COUNTER_GENERICS MONO_COUNTER_SECURITY