1. A method, comprising: allocating a respective memory location for storing a value of each of one or more variables of a software application whose behavior is a target of a profiling operation, wherein the profiling operation profiles the behavior of the software application in terms of data motion between hardware resources, and wherein values of the one or more variables comprise information to be used in profiling the behavior of the software application in terms of data motion between hardware resources; registering the one or more variables with an event agent that is to be used in the profiling operation, wherein the event agent is one of a plurality of event agents, wherein each of the plurality of event agents is configured to capture one or more values associated with a respective runtime event in response to detection of the runtime event, and wherein each of at least two of the plurality of event agents is configured to capture values associated with runtime events of a different type; updating, during execution of the software application, the value stored in the respective memory location for each of the registered variables in response to the value of each of the registered variables changing during execution; the event agent, as part of the profiling operation: detecting a runtime event, wherein the runtime event is a system event that occurs as a result of executing the software application; and in response to said detecting: accessing the respective memory location for each of the registered variables to capture the value of each of the registered variables; associating the value of each of the registered variables with the runtime event; and storing the value of each of the registered variables associated with the runtime event in an event set, wherein the event set comprises a plurality of events, wherein each event in the event set comprises data representing a respective runtime event that occurred during execution of the software application, and wherein data in the event set that represents the runtime event comprises the value of each of the registered variables associated with the runtime event.