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.
See man:lttng-ust(3) to learn more about custom tracepoint providers.