Duration events provide a way to mark a duration of work on a given thread. The duration events are specified by the B and E phase types.

You can nest the B and E events. The B event must come before the corresponding E event. This allows you to capture function calling behaviour on a thread.

The timestamps for the duration events must be in increasing order for a given thread. Timestamps in different threads do not have to be in increasing order, just the timestamps within a given thread.

If you provide args to both the B and E events then the arguments will be merged. If there is a duplicate argument value provided, the E event argument will be taken and the B event argument will be discarded.

Hierarchy

Properties

args?: Record<string, unknown>

Any arguments provided for the event. Some of the event types have required argument fields, otherwise, you can put any information you wish in here. The arguments are displayed in Trace Viewer when you view an event in the analysis section.

cat?: undefined

The event categories. This is a comma separated list of categories for the event. The categories can be used to hide events in the Trace Viewer UI.

cname?: string

A fixed color name to associate with the event. If provided, cname must be one of the names listed in trace-viewer's base color scheme's [reserved color names list]https://github.com/catapult-project/catapult/blob/main/tracing/tracing/base/color_scheme.html.

name?: undefined

The name of the event, as displayed in Trace Viewer

ph: "E"

The event type. This is a single character which changes depending on the type of event being output.

pid: number

The process ID for the process that output this event.

sf?: number

An id for a stackFrame object in {@see TraceEventJSONObject#stackFrames}

stack?: string[]

A stack is just an array of strings. Mutually exclusive with sf property. The 0th item in the array is the rootmost part of the callstack, the last item is the leafmost entry in the stack, e.g. the closest to what was running when the event was issued. You can put anything you want in each trace, but strings in hex form ("0x1234") are treated as program counter addresses and are eligible for symbolization.

Example

["0x1", "0x2"]
tid: number

The thread ID for the thread that output this event.

ts: number

The tracing clock timestamp of the event. The timestamps are provided at microsecond granularity.

tts?: number

Optional. The thread clock timestamp of the event. The timestamps are provided at microsecond granularity.