ros2_tracing/tracetools_trace/trace.py
2019-06-06 09:36:16 +02:00

58 lines
2.5 KiB
Python

#!/usr/bin/env python3
# Entrypoint/script to setup and start an LTTng tracing session
import sys
import time
import argparse
from tracetools_trace.tools.lttng import (
lttng_setup,
lttng_start,
lttng_stop,
lttng_destroy,
)
from tracetools_trace.tools.names import (
DEFAULT_EVENTS_ROS,
DEFAULT_EVENTS_KERNEL,
)
def main():
parser = argparse.ArgumentParser(description='Setup and launch an LTTng tracing session.')
parser.add_argument('--session-name', '-s', dest='session_name',
default=f'session-{time.strftime("%Y%m%d%H%M%S")}',
help='the name of the tracing session (default: session-YYYYMMDDHHMMSS)')
parser.add_argument('--path', '-p', dest='path',
default='/tmp',
help='path of the base directory for trace data (default: %(default)s)')
parser.add_argument('--ust', '-u', nargs='*', dest='events_ust', default=DEFAULT_EVENTS_ROS,
help='the ROS UST events to enable (default: all events) [to disable all UST events, provide this flag without any event name]')
parser.add_argument('--kernel', '-k', nargs='*', dest='events_kernel', default=DEFAULT_EVENTS_KERNEL,
help='the kernel events to enable (default: all events) [to disable all UST events, provide this flag without any event name]')
parser.add_argument('--list', '-l', dest='list', action='store_true',
help='display lists of enabled events (default: %(default)s)')
args = parser.parse_args()
session_name = args.session_name
base_path = args.path
full_path = base_path + '/' + session_name
ros_events = args.events_ust
kernel_events = args.events_kernel
ust_enabled = len(ros_events) > 0
kernel_enabled = len(kernel_events) > 0
print(f'UST tracing {f"enabled ({len(ros_events)} events)" if ust_enabled else "disabled"}')
if args.list and ust_enabled:
print(f'\tevents: {ros_events}')
print(f'kernel tracing {f"enabled ({len(kernel_events)} events)" if kernel_enabled else "disabled"}')
if args.list and kernel_enabled:
print(f'\tevents: {kernel_events}')
lttng_setup(session_name, full_path, ros_events=ros_events, kernel_events=kernel_events)
print(f'writting tracing session to: {full_path}')
input('press enter to start...')
lttng_start(session_name)
input('press enter to stop...')
print('stopping & destroying tracing session')
lttng_stop(session_name)
lttng_destroy(session_name)