A computer-implemented method, the method comprising: monitoring execution of program code by a first processor component, the first processor component being configured to execute at least a first portion of the program code; monitoring execution of the program code by a second processor component, the second processor component being configured to execute at least a second portion of the program code; detecting, by a computing system, that a trigger condition is satisfied based on at least one of: i) identifying an occurrence of an operand in at least the first portion of the program code or the second portion of the program code, the operand including a first parameter value used to initiate one or more trace events, or ii) determining that a current time of at least one clock of the computing system indicates a predefined time value used to initiate one or more trace events; responsive to detecting that the trigger condition is satisfied, initiating, by the computing system, at least a first trace event that generates trace data, the trace data identifying respective hardware events (622, 624) occurring across distributed processor units that include at least the first processor component and the second processor component, and for each of the respective hardware events (622, 624), the trace data comprises at least a hardware event time stamp; and using, by the computing system, the trace data to generate a correlated set of trace data that indicates at least a time ordered sequence of the respective hardware events (622, 624) that are generated when the trigger condition is satisfied; characterized in that the first trace event is a synchronized trace event that generates trace data identifying hardware events (622, 624) occurring across the distributed processor units, the trace data also identifying a global hardware event time stamp and a unique trace identifier for each hardware event (622, 624), wherein the hardware events (622, 624) include at least two synchronized hardware events that share a global hardware event time stamp. monitoring execution of program code by a first processor component, the first processor component being configured to execute at least a first portion of the program code; monitoring execution of the program code by a second processor component, the second processor component being configured to execute at least a second portion of the program code; detecting, by a computing system, that a trigger condition is satisfied based on at least one of: i) identifying an occurrence of an operand in at least the first portion of the program code or the second portion of the program code, the operand including a first parameter value used to initiate one or more trace events, or ii) determining that a current time of at least one clock of the computing system indicates a predefined time value used to initiate one or more trace events; i) identifying an occurrence of an operand in at least the first portion of the program code or the second portion of the program code, the operand including a first parameter value used to initiate one or more trace events, or ii) determining that a current time of at least one clock of the computing system indicates a predefined time value used to initiate one or more trace events; responsive to detecting that the trigger condition is satisfied, initiating, by the computing system, at least a first trace event that generates trace data, the trace data identifying respective hardware events (622, 624) occurring across distributed processor units that include at least the first processor component and the second processor component, and for each of the respective hardware events (622, 624), the trace data comprises at least a hardware event time stamp; and using, by the computing system, the trace data to generate a correlated set of trace data that indicates at least a time ordered sequence of the respective hardware events (622, 624) that are generated when the trigger condition is satisfied; characterized in that the first trace event is a synchronized trace event that generates trace data identifying hardware events (622, 624) occurring across the distributed processor units, the trace data also identifying a global hardware event time stamp and a unique trace identifier for each hardware event (622, 624), wherein the hardware events (622, 624) include at least two synchronized hardware events that share a global hardware event time stamp.