  Field data is an invaluable source of information for testers and developers
because it witnesses how software systems operate in real environments,
capturing scenarios and configurations relevant to end-users. Unfortunately,
collecting traces might be resource-consuming and can significantly affect the
user experience, for instance causing annoying slowdowns.
  Existing monitoring techniques can control the overhead introduced in the
applications by reducing the amount of collected data, for instance by
collecting each event only with a given probability. However, collecting fewer
events limits the amount of information extracted from the field and may fail
in providing a comprehensive picture of the behavior of a program.
  In this paper we present fragmented monitoring, a monitoring technique that
addresses the issue of collecting information from the field without annoying
users. The key idea of fragmented monitoring is to reduce the overhead by
recording partial traces (fragments) instead of full traces, while annotating
the beginning and the end of each fragment with state information. These
annotations are exploited offline to derive traces that might be likely
observed in the field and that could not be collected directly due to the
overhead that would be introduced in a program.
