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
Parameters
Remarkssection_mask: The sections to dump counters for outfile: a FILE to dump the results to
Displays the counts of all the enabled counters registered. To filter by variance, you can OR one or more variance with the specific section you want. Use MONO_COUNTER_SECTION_MASK to dump all categories of a specific variance.
Parameters
Remarkssection_mask: a mask listing the sections that will be displayed
This is used to track which counters will be displayed.