| 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.">; |
| } |