The +{macro-name}()+ utility macro was developed to make user space tracing super simple, albeit with notable disadvantages compared to custom, full-fledged tracepoint providers: * All generated events have the same provider/event names. * There's no static type checking. * The only event field with user data you actually get, named `msg`, is a string potentially containing the values you passed to the macro using your own format. This also means that you cannot use filtering using a custom expression at run time because there are no isolated fields. * Since +{macro-name}()+ uses C standard library's man:vasprintf(3) function in the background to format the strings at run time, its expected performance is lower than using custom tracepoint providers with typed fields, which do not require a conversion to a string. * Generally, a string containing the textual representation of the user data fields is not as compact as binary fields in the resulting trace. Thus, +{macro-name}()+ is useful for quick prototyping and debugging, but should not be considered for any permanent/serious application instrumentation. +v{macro-name}()+ does not have a `STAP_PROBEV()` call, because `STAP_PROBEV()` does not support `va_list`. If you need it, you should emit this call yourself. See man:lttng-ust(3) to learn more about custom tracepoint providers.