132 lines
6.3 KiB
TableGen
132 lines
6.3 KiB
TableGen
include "../../../../source/Commands/OptionsBase.td"
|
|
|
|
// The information of the start commands here should match the description of
|
|
// the intel-pt section of the jLLDBTraceStart packet in the
|
|
// lldb/docs/lldb-gdb-remote.txt documentation file. Similarly, it should match
|
|
// the API help message of TraceIntelPT::GetStartConfigurationHelp().
|
|
|
|
let Command = "thread trace start intel pt" in {
|
|
def thread_trace_start_intel_pt_size
|
|
: Option<"size", "s">,
|
|
Group<1>,
|
|
Arg<"Value">,
|
|
Desc<
|
|
"Trace size in bytes per thread. It must be a power of 2 greater "
|
|
"than or equal to 4096 (2^12). The trace is circular keeping "
|
|
"the most recent data. Defaults to 4096 bytes. It's possible to "
|
|
"specify size using multiples of unit bytes, e.g., 4KB, 1MB, 1MiB, "
|
|
"where 1K is 1024 bytes and 1M is 1048576 bytes.">;
|
|
def thread_trace_start_intel_pt_tsc
|
|
: Option<"tsc", "t">,
|
|
Group<1>,
|
|
Desc<"Enable the use of TSC timestamps. This is supported on all "
|
|
"devices "
|
|
"that support intel-pt.">;
|
|
def thread_trace_start_intel_pt_psb_period
|
|
: Option<"psb-period", "p">,
|
|
Group<1>,
|
|
Arg<"Value">,
|
|
Desc<"This value defines the period in which PSB packets will be "
|
|
"generated. A PSB packet is a synchronization packet that "
|
|
"contains a "
|
|
"TSC timestamp and the current absolute instruction pointer. "
|
|
"This parameter can only be used if "
|
|
"/sys/bus/event_source/devices/intel_pt/caps/psb_cyc is 1. "
|
|
"Otherwise, "
|
|
"the PSB period will be defined by the processor. If supported, "
|
|
"valid "
|
|
"values for this period can be found in "
|
|
"/sys/bus/event_source/devices/intel_pt/caps/psb_periods which "
|
|
"contains a hexadecimal number, whose bits represent valid values "
|
|
"e.g. if bit 2 is set, then value 2 is valid. The psb_period "
|
|
"value is "
|
|
"converted to the approximate number of raw trace bytes between "
|
|
"PSB "
|
|
"packets as: 2 ^ (value + 11), e.g. value 3 means 16KiB between "
|
|
"PSB "
|
|
"packets. Defaults to 0 if supported.">;
|
|
}
|
|
|
|
let Command = "process trace start intel pt" in {
|
|
def process_trace_start_intel_pt_buffer_size
|
|
: Option<"buffer-size", "s">,
|
|
Group<1>,
|
|
Arg<"Value">,
|
|
Desc<
|
|
"Size in bytes used by each individual per-thread or per-cpu trace "
|
|
"buffer. It must be a power of 2 greater than or equal to 4096 "
|
|
"(2^12) "
|
|
"bytes. It's possible to specify a unit for these bytes, like 4KB, "
|
|
"16KiB or 1MB. Lower case units are allowed for convenience.">;
|
|
def process_trace_start_intel_pt_per_cpu_tracing
|
|
: Option<"per-cpu-tracing", "c">,
|
|
Group<1>,
|
|
Desc<
|
|
"Instead of having an individual trace buffer per thread, which "
|
|
"uses "
|
|
"a number trace buffers proportional to the number of running "
|
|
"threads, this option triggers the collection on a per cpu core "
|
|
"basis. This effectively traces the entire activity on all cpus "
|
|
"using a limited amount of trace buffers regardless of the number "
|
|
"of "
|
|
"threads. This might cause data loss for less frequent threads. "
|
|
"This "
|
|
"option forces the capture of TSC timestamps (see --tsc). Also, "
|
|
"this "
|
|
"option can't be used simulatenously with any other trace sessions "
|
|
"because of its system-wide nature.">;
|
|
def process_trace_start_intel_pt_process_size_limit
|
|
: Option<"total-size-limit", "l">,
|
|
Group<1>,
|
|
Arg<"Value">,
|
|
Desc<
|
|
"Maximum total trace size per process in bytes. This limit applies "
|
|
"to "
|
|
"the sum of the sizes of all thread and cpu traces of this "
|
|
"process, "
|
|
"excluding the ones created with the \"thread trace start\" "
|
|
"command. "
|
|
"Whenever a thread is attempted to be traced due to this command "
|
|
"and "
|
|
"the limit would be reached, the process is stopped with a "
|
|
"\"processor trace\" reason, so that the user can retrace the "
|
|
"process "
|
|
"if needed. Defaults to 500MB. It's possible to specify a unit for "
|
|
"these bytes, like 4KB, 16KiB or 1MB. Lower case units are allowed "
|
|
"for convenience.">;
|
|
def process_trace_start_intel_pt_tsc
|
|
: Option<"tsc", "t">,
|
|
Group<1>,
|
|
Desc<"Enable the use of TSC timestamps. This is supported on all "
|
|
"devices "
|
|
"that support intel-pt.">;
|
|
def process_trace_start_intel_pt_psb_period
|
|
: Option<"psb-period", "p">,
|
|
Group<1>,
|
|
Arg<"Value">,
|
|
Desc<"This value defines the period in which PSB packets will be "
|
|
"generated. A PSB packet is a synchronization packet that "
|
|
"contains a "
|
|
"TSC timestamp and the current absolute instruction pointer. "
|
|
"This parameter can only be used if "
|
|
"/sys/bus/event_source/devices/intel_pt/caps/psb_cyc is 1. "
|
|
"Otherwise, "
|
|
"the PSB period will be defined by the processor. If supported, "
|
|
"valid "
|
|
"values for this period can be found in "
|
|
"/sys/bus/event_source/devices/intel_pt/caps/psb_periods which "
|
|
"contains a hexadecimal number, whose bits represent valid values "
|
|
"e.g. if bit 2 is set, then value 2 is valid. The psb_period "
|
|
"value is "
|
|
"converted to the approximate number of raw trace bytes between "
|
|
"PSB "
|
|
"packets as: 2 ^ (value + 11), e.g. value 3 means 16KiB between "
|
|
"PSB "
|
|
"packets. Defaults to 0 if supported.">;
|
|
def process_trace_start_intel_pt_disable_cgroup_filtering
|
|
: Option<"disable-cgroup-filtering", "d">,
|
|
Desc<"Disable the automatic cgroup filtering that is applied if "
|
|
"--per-cpu "
|
|
"is provided. Cgroup filtering allows collecting intel pt data "
|
|
"exclusively of processes of the same cgroup as the target.">;
|
|
}
|