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